PDO PDOStatement::execute(): SQLSTATE[HY000]: General error: 1008 OCIStmtExecute: ORA-01008: not all variables bound
PDO PDOStatement::execute(): SQLSTATE[HY000]: General error: 1008 OCIStmtExecute: ORA-01008: not all variables bound
我最近将我的网站从 OCI 转换为 PDO。
我有这个PHP:
foreach ($bindings as $key => $value) {
if ( strpos( $query, $key) ) {
$stmt->bindParam(":$key", $value);
echo "Bound ". $key ." => ". $value;
}
}
输出:
Bound :globalSearch0 => %NCR%
Bound :globalSearch1 => %NCR%
Bound :globalSearch2 => %NCR%
Bound :globalSearch3 => %NCR%
Bound :globalSearch4 => %NCR%
但是PHP仍然输出错误信息:
Warning: PDOStatement::execute(): SQLSTATE[HY000]: General
error: 1008 OCIStmtExecute: ORA-01008: not all variables bound
但是所有变量 都是 绑定的!我回应了生成的 SQL 查询,它使用了 5 个变量,与绑定的数量相同!
我是不是完全漏掉了什么?这与我使用 oci_bind_by_name
的代码相同,我从来没有遇到任何问题,但 bindParam
似乎是导致此问题的原因。
如果您的数组键中已经包含':',您是否需要在bindParam
参数中再次添加它?
应该是$stmt->bindParam($key, $value);
为了使您的测试准确,它应该如下所示:
if( $stmt->bindParam(":$key", $value) ){
echo "Bound ". $key ." => ". $value;
}
确保绑定确实成功
我最近将我的网站从 OCI 转换为 PDO。
我有这个PHP:
foreach ($bindings as $key => $value) {
if ( strpos( $query, $key) ) {
$stmt->bindParam(":$key", $value);
echo "Bound ". $key ." => ". $value;
}
}
输出:
Bound :globalSearch0 => %NCR%
Bound :globalSearch1 => %NCR%
Bound :globalSearch2 => %NCR%
Bound :globalSearch3 => %NCR%
Bound :globalSearch4 => %NCR%
但是PHP仍然输出错误信息:
Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: 1008 OCIStmtExecute: ORA-01008: not all variables bound
但是所有变量 都是 绑定的!我回应了生成的 SQL 查询,它使用了 5 个变量,与绑定的数量相同!
我是不是完全漏掉了什么?这与我使用 oci_bind_by_name
的代码相同,我从来没有遇到任何问题,但 bindParam
似乎是导致此问题的原因。
如果您的数组键中已经包含':',您是否需要在bindParam
参数中再次添加它?
应该是$stmt->bindParam($key, $value);
为了使您的测试准确,它应该如下所示:
if( $stmt->bindParam(":$key", $value) ){
echo "Bound ". $key ." => ". $value;
}
确保绑定确实成功