報錯了 object(PdoMySql)#1 (0) { } Fatal error: Call to a member function fetchAll() on a non-object in D:\PC_webserver\wwwroot\pdo\pdo_class27.php on line 75 按照視頻教程敲的代碼,對比了視頻的代碼,還是報錯啊 <?php error_reporting(E_ALL); //header("Content-type:text/html;charset=utf-8"); class PdoMySql{ public static $config=array();//設置連接參數(shù),配置信息 public static $link=null;//保存連接標示符 public static $pconnect=false;//是否開啟長連接 public static $dbVersion=null;//保存數(shù)據(jù)庫版本 public static $connected=false;//是否連接成功 public static $PDOStatement=null;//保存PDOStatement對象 public static $queryStr=null;//保存最后的操作 public static $error=null;//保存錯誤信息 public function __construcr($dbConfig) { if (!class_exits("PDO")) { self::throw_exception('不支持'); } if (!is_array($dbConfig)) { $dbConfig=array( 'hostname'=>DB_HOST, 'username'=>DB_USER, 'password'=>DB_PWD, 'database'=>DB_NAME, 'hostport'=>DB_PORT, 'dbms'=>DB_TYPE, 'dsn'=>DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME ); } if ( empty($dbConfig['hostname']) ) { self::throw_exception('沒有定義數(shù)據(jù)庫配置'); } self::$config=$dbConfig; if ( empty(self::$config['params']) ) { self::$config['params']=array(); } if ( !isset(self::$link) ) { $configs=self::$config; if (self::$pconnect) { //開啟長連接,添加到配置數(shù)組中 $configs['params'][constant("PDO::ATTR_PERSISTENT")]=true; } try { self::$link=new PDO($configs['dsn'],$configs['username'], $configs['password'],$configs['params']); }catch(PDOException $e) { self::throw_exception($e->getMessage()); } if (!self::$link) { self::throw_exception('PDO連接錯誤'); return false; } self::$link->exec('SET NAMES '.DB_CHARSET); self::$dbVersion=self::$link->getAttribute(constant("PDO::ATR_SERVER_VESION")); self::$connected=true; unset($configs); } } /** *得到所有記錄 *@param string $sql *@return unknown */ public static function getAll($sql=null) { if ($sql!=null) { self::query($sql); } $result=self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC")); return $result; } public static function query($sql='') { $link=self::$link; if (!$link) { return false; } //判斷之前是夠有結(jié)果集,如果有的話釋放結(jié)果集 if (!empty(self::$PDOStatement)) { self::free(); } self::$queryStr=$sql; self::$PDOStatement=$link->prepare(self::$queryStr); $res=self::$PDOStatement->execute(); self::haveErrorThrowException(); return $res; } public static function free() { self::$PDOStatement=null; } public static function haveErrorThrowException() { $obj=empty(self::$PDOStatement)?self::$link:self::$PDOStatement; $arrError=$obj->errorInfo(); //print_r($arrError); if ($arrError[0]!='000000') { self::$error='SQLSTATE'.$arrError[0].'SQLERR'.$arrError[2].'<br/>Error SQL'.self::$queryStr; self::throw_exception(self::error); return false; } if (self::$queryStr=='') { self::throw_exception('沒有執(zhí)行的sql語句'); return false; } } /** *字定義錯誤處理 *@param unknown $errMsg */ public static function throw_exception($errMsg) { echo $errMsg; } } ?> <?php require_once 'config.php'; $PdoMySql=new PdoMySql; var_dump($PdoMySql); $sql='select * from user'; print_r($PdoMySql->getAll($sql)); ?> 我去掉require_once 'config.php';也是提示Fatal error: Call to a member function fetchAll() on a non-object in D:\PC_webserver\wwwroot\pdo\pdo_class27.php on line 77

嘻嘻哈哈_0004
2014-10-08
3 回答
舉報
0/150
提交
取消
2014-10-11
你的fetchall方法沒寫吧,你看看你代碼
^-^...
2016-08-19
你解決了問題了么 遇到了和你一樣的問題
2014-10-13
你說完getAll方法就說了query方法
然后在getAll里面用了fetchAll
視頻里你也沒有寫過fetchAll的方法呀
視頻5.2開始到5.3 ?是按照你視頻課程抄的代碼,是不是視頻搞錯倆 ,老師檢查一下