【问题标题】:PDO PDOStatement::execute(): SQLSTATE[HY000]: General error: 1008 OCIStmtExecute: ORA-01008: not all variables boundPDO PDOStatement::execute(): SQLSTATE[HY000]: 一般错误: 1008 OCIStmtExecute: ORA-01008: 并非所有变量都绑定
【发布时间】:2015-04-09 17:33:54
【问题描述】:

我最近将我的网站从 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 仍然输出错误信息:

警告:PDOStatement::execute():SQLSTATE[HY000]:常规 错误:1008 OCIStmtExecute:ORA-01008:并非所有变量都绑定

但所有变量都绑定了!我回显了生成的 SQL 查询,它使用了 5 个变量,与绑定的数量相同!

我在这里完全错过了什么吗?这与我使用 oci_bind_by_name 的代码相同,我从未遇到任何问题,但 bindParam 似乎是造成这种情况的原因。

【问题讨论】:

    标签: php oracle pdo


    【解决方案1】:

    如果你的数组键已经有':',你需要在bindParam参数中再次添加它吗?

    应该是$stmt->bindParam($key, $value);

    为了使您的测试准确,它应该如下所示:

    if( $stmt->bindParam(":$key", $value) ){
      echo "Bound ". $key ." => ". $value;
    }
    

    为了确保绑定实际上是成功的

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 2015-10-30
      • 2011-09-22
      • 2021-12-18
      • 2020-05-06
      • 2021-12-11
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      相关资源
      最近更新 更多