Php PDO PDO语句::execute():SQLSTATE[HY000]:常规错误:1008 OCISSTMTEXECUTE:ORA-01008:未绑定所有变量
我最近把我的网站从OCI改成了PDO 我有一个PHP:Php PDO PDO语句::execute():SQLSTATE[HY000]:常规错误:1008 OCISSTMTEXECUTE:ORA-01008:未绑定所有变量,php,oracle,pdo,Php,Oracle,Pdo,我最近把我的网站从OCI改成了PDO 我有一个PHP: foreach ($bindings as $key => $value) { if ( strpos( $query, $key) ) { $stmt->bindParam(":$key", $value); echo "Bound ". $key ." => ". $value; } } 输出: Bound :globalSearch0 => %NCR% Bound :glo
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仍然输出错误消息:
警告:PDOStatement::execute:SQLSTATE[HY000]:常规
错误:1008 OCISMTEXECUTE:ORA-01008:未绑定所有变量
但是所有的变量都是有界的!我回显生成的SQL查询,它使用了5个变量,与绑定的数量相同
我完全错过了什么吗?这与我使用oci_bind_by_name时使用的代码相同,我从未遇到过任何问题,但bindParam似乎是导致此问题的原因。如果数组键中已经有“:”,是否需要在bindParam参数中再次添加它 它应该是$stmt->bindParam$key,$value 要使测试准确,它应该如下所示:
if( $stmt->bindParam(":$key", $value) ){
echo "Bound ". $key ." => ". $value;
}
确保绑定实际成功