Php 与PDO相关的数据库错误
更改服务器配置后。更新了MYSQL和PHP。我遇到了如下不同的SQL错误: SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在“WHERE id”附近使用正确的语法= 第1行的“759” SQLSTATE[HY000]:一般错误:2014无法在 其他未缓冲查询处于活动状态。考虑使用 PDO语句::fetchAll()。或者,如果您的代码只是 要在mysql上运行,可以通过设置 PDO::MYSQL\u ATTR\u USE\u BUFFERED\u查询属性 我添加了Php 与PDO相关的数据库错误,php,mysql,linux,pdo,Php,Mysql,Linux,Pdo,更改服务器配置后。更新了MYSQL和PHP。我遇到了如下不同的SQL错误: SQLSTATE[42000]:语法错误或访问冲突:1064您有 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在“WHERE id”附近使用正确的语法= 第1行的“759” SQLSTATE[HY000]:一般错误:2014无法在 其他未缓冲查询处于活动状态。考虑使用 PDO语句::fetchAll()。或者,如果您的代码只是 要在mysql上运行,可以通过设置 PDO::MYSQL\u ATT
$this->dbo->setAttribute(PDO::MYSQL\u ATTR\u USE\u BUFFERED\u QUERY,true)代码>,这会导致代码错误
我没有更改代码中的任何内容,所以不会是synthax错误
更新:
函数loadAssoc($values=false){
我得到一个错误PHP致命错误:在使用execute的行上调用成员函数execute()
在我的cpanel中,它说:linux、PHP5.3.21、mysql 5.5.28(刚刚升级到这个版本)认为可以解决这个问题
正如我前面所说的,在我的服务器更新之前,一切都正常:S,来自:
如果PDOStatement上的此属性设置为TRUE,则MySQL驱动程序将使用MySQL API的缓冲版本。如果您正在编写可移植代码,则应改用PDOStatement::fetchAll()
无论出于何种原因,您更新的PDO扩展似乎是针对不支持缓冲查询的mysql api链接的
现有代码正在使用缓冲查询,因此将失败。不更改代码本身的唯一解决方案是:
- 安装支持缓冲查询的mysql客户端库
- 将PDO链接到此库
为了进一步帮助您,我需要有关您正在使用的操作系统以及MySQL、PDO、PHP的版本的其他信息…请显示完整查询的示例。尝试使用PDO启用缓冲查询时显示“代码错误”。第一个错误与PDO无关-您编写了语法不正确的查询。函数loadAssoc($values=false){//Execute语句($values)?$this->statement->Execute($values):$this->statement->Execute();//返回关联数组Return$this->statement->fetch(PDO::fetch_ASSOC)}我得到错误PHP致命错误:调用成员函数Execute()在使用execute的线路上。我想可能是PDO链接到了错误的mysql api(从这里唯一的答案来看)。我将对此进行调查,并在我的cpanel中返回我的mysql、php和PDO版本,上面写着:linux、PHP5.3.21、mysql 5.5.28(刚刚升级到这个版本)我想这会解决问题。我会问一个关于cpanel支持的问题。(如果你还没有)我也会尝试。我联系了我的主机,他们也一直在做这件事。我也会尝试cpanel!谢谢你的帮助。如果你能找到解决方案,那就太好了。祝你好运!
// Execute statement
($values) ? $this->statement->execute($values) : $this->statement->execute();
// Return associative array
return $this->statement->fetch(PDO::FETCH_ASSOC);
}