0

在工作中,我们使用 Zend 1.10.7 并且遇到了一个奇怪的错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08P01]: <<Unknown error>>: 7 ERROR:  bind message supplies 0 parameters, but prepared statement "pdo_stmt_00000015" requires 1' in /var/www/ZendFramework-1.10.7/library/Zend/Db/Statement/Pdo.php:228
Stack trace:

#0 /var/www/ZendFramework-1.10.7/library/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /var/www/ZendFramework-1.10.7/library/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#2 /var/www/ZendFramework-1.10.7/library/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#3 /var/www/ZendFramework-1.10.7/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#4 /var/www/ZendFramework-1.10.7/library/Zend/Db/Table/Abstract.php(1505): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#5 /var/www/ZendFramework-1.10.7/library/Zend/Db/Table/Abstract.php(1321): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#6 /var/w in /var/www/ZendFramework-1.10.7/library/Zend/Db/Statement/Pdo.php on line 234

有没有人见过这个?如果是这样,原因是什么?它只在 Firefox 和 IE 9 中执行此操作。但是 chrome 很好,该站点可以正常工作。

有什么想法吗?太我了,我的谷歌介意它是我的插入或选择语句之一,但在 chrome 中它再次起作用,选择、插入和更新数据库中的信息。

我们使用 PostgreSQL 作为数据库

4

1 回答 1

1

PDO 查询正在寻找一个绑定参数,这表示应该没有理由为什么不同的浏览器会给出不同的结果,除非传递给这个查询的值是动态生成的 -

如果您的查询如下所示:

SELECT * FROM users WHERE id = ?

您需要确保绑定一个参数。

$stmt->bindParam(1, $idValue);

如果$idValue是由于某种原因返回 NULL 的函数的结果,或者 bindParam 方法调用本身被包装在一个仅在圣诞节评估为 true 的条件语句中,那么您将遇到像您这样的异常。这是因为执行语句时缺少该值。

编辑:我的猜测是Array这里的值PDOStatement->execute(Array)是空的。

于 2012-10-16T16:54:08.010 回答