我现在用的是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
解决方案 »
- 如何把MYSQL中的数据写入到Memcached中?
- 如何将SimpleXMLElement的asXML方法输出的xml字符串格式化
- php 调用system函数出现引号的错误
- 你们看源码是先从那个文件开始看
- 请教一下,网站如何实现关闭ie后,要重新登陆?
- substr()返回的字符串最后一位是问号
- 高手快来帮帮小弟好吗?解决问题立即给分。
- 怎样看CSDN以前的帖子
- 如何使用PHP在网页间传递信息?
- 微信打印机是如何实现的
- cakephp 内部错误 问题请教
- 轻松解决Warning: Cannot modify header information – headers already sent by……
说明对象 $this->db 没有 query 方法
而这个 $this->db 应该是 PDO 对象,应该有 query 方法
显然对象 $this->db 没有实例化,或者实例化失败
你应该在实例化 $this->db 的地方查找原因如果说 如果把服务器重启一下就没问题了
那么就表示数据库在运行过程中被锁死了,如果频繁发生,则应考虑升级(或降级)数据库版本