报错了
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
提交
取消