我现在用的是pdo连库,可是这pdo老是报错:Fatal error: Call to a member function query() on a non-object in /www/kms6/System/ZOL/Abstract/Pdo.php on line 153,在网上查了,有很多同样的问题,但没有答案,我的方法是这样的
public function query($sql = '')
{
static $retry_count=0;
$this->chooseDbConn($sql);
$sql .= $this->dbComment;
$query = $this->db->query($sql);
if (!$query or (!$query instanceof PDOStatement))
{
$error = $this->errorInfo();
if(2013==$error[1] || 2006==$error[1])
{
$this->__construct();
if($retry_count++ < 3) return $this->query($sql);
}
echo "$sql 查询数据库失败,重新连接没成功!\r\n";
//最大重试次数限制
trigger_error("{$error[2]}({$error[1]})", E_USER_WARNING);
return false;
}
if (!empty($this->forceReadMaster))
{
$this->forceReadMaster = false;
}
$retry_count = 0;
return $query;
}
每到这里“$query = $this->db->query($sql);”就会报错,但是,如果把服务器重启一下就没问题了,请问哪位高手能帮解答一下,3Q3Q
public function query($sql = '')
{
static $retry_count=0;
$this->chooseDbConn($sql);
$sql .= $this->dbComment;
$query = $this->db->query($sql);
if (!$query or (!$query instanceof PDOStatement))
{
$error = $this->errorInfo();
if(2013==$error[1] || 2006==$error[1])
{
$this->__construct();
if($retry_count++ < 3) return $this->query($sql);
}
echo "$sql 查询数据库失败,重新连接没成功!\r\n";
//最大重试次数限制
trigger_error("{$error[2]}({$error[1]})", E_USER_WARNING);
return false;
}
if (!empty($this->forceReadMaster))
{
$this->forceReadMaster = false;
}
$retry_count = 0;
return $query;
}
每到这里“$query = $this->db->query($sql);”就会报错,但是,如果把服务器重启一下就没问题了,请问哪位高手能帮解答一下,3Q3Q
解决方案 »
- PDO连接数据库时如何获取结果集的数目
- 如何让 Cookie 拥有多个值?
- 大家用的什么开发环境?
- 有人能读懂这一行JS代码么
- 请教一个php删除xml节点的问题,看代码
- mysql语句出错
- mysql_pconnect() 没有定义,查了好久,实在不明白!
- 一段代码在WINDOWS+PHP+MYSQL上运行正常,在LINUX下不正常
- 调查:你做PHP开发是一个人开发还是团队?
- 问几个问题,今天一定要搞懂,开发过网站的人都懂,给200分!!!
- cakephp 内部错误 问题请教
- 轻松解决Warning: Cannot modify header information – headers already sent by……
说明对象 $this->db 没有 query 方法
而这个 $this->db 应该是 PDO 对象,应该有 query 方法
显然对象 $this->db 没有实例化,或者实例化失败
你应该在实例化 $this->db 的地方查找原因如果说 如果把服务器重启一下就没问题了
那么就表示数据库在运行过程中被锁死了,如果频繁发生,则应考虑升级(或降级)数据库版本