报错了 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();//设置连接参数,配置信息 public static $link=null;//保存连接标示符 public static $pconnect=false;//是否开启长连接 public static $dbVersion=null;//保存数据库版本 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('没有定义数据库配置'); } self::$config=$dbConfig; if ( empty(self::$config['params']) ) { self::$config['params']=array(); } if ( !isset(self::$link) ) { $configs=self::$config; if (self::$pconnect) { //开启长连接,添加到配置数组中 $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; } //判断之前是够有结果集,如果有的话释放结果集 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('没有执行的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
提交
取消