更改服务器配置后。更新了MYSQL和PHP。我遇到了类似这样的SQL错误:
SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 在'WHERE id =附近使用正确语法的MySQL服务器版本 '759''在第1行
SQLSTATE [HY000]:常规错误:2014无法执行查询 其他未缓冲的查询处于活动状态。考虑使用 PDOStatement对象::使用fetchall()。或者,如果您的代码只是永远 要对mysql运行,您可以通过设置启用查询缓冲 PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性。
我添加了$this->dbo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
,导致代码错误。
我没有更改代码中的任何内容,因此它不能是synthax错误?
更新: function loadAssoc($ values = false){
// Execute statement
($values) ? $this->statement->execute($values) : $this->statement->execute();
// Return associative array
return $this->statement->fetch(PDO::FETCH_ASSOC);
}
我收到错误PHP致命错误:在使用execute的行上调用成员函数execute()。
在我的cpanel中说:linux,php 5.3.21,mysql 5.5.28(刚升级到这个)认为可以解决问题
就像我之前所说的,在服务器更新之前一切正常:S
答案 0 :(得分:1)
如果在PDOStatement上将此属性设置为TRUE,则MySQL驱动程序将使用MySQL API的缓冲版本。如果您正在编写可移植代码,则应使用PDOStatement :: fetchAll()。
似乎 - 无论出于何种原因 - 您更新的PDO扩展名与不支持缓冲查询的mysql api相关联。
您现有的代码使用缓冲查询,因此会失败。不改变代码本身的唯一解决方案是:
为了进一步帮助您,我需要有关您正在使用的操作系统以及MySQL,PDO,PHP的哪些版本的其他信息......