【问题标题】:How to dynamically add a PDO statement into array?如何将 PDO 语句动态添加到数组中?
【发布时间】:2012-03-20 18:42:28
【问题描述】:

如何将 PDO 语句动态添加到数组中?
我想写一个函数,例如:

function executePreparedQRY($QueryString, $ArrayParams, $UseBufferedQry = FALSE) {
    if ($UseBufferedQry) {
        $ArrayParams[] = PDO::MYSQL_ATTR_USE_BUFFERED_QUERY;
    }
    return $statement = Zend_Db_Table::getDefaultAdapter()->prepare($QueryString)->execute($ArrayParams);
} 

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 始终被理解为另一个查询参数,而不是 PDO 语句。 那么,如何根据$UseBufferedQry 的值在执行语句中包含PDO::MYSQL_ATTR_USE_BUFFERED_QUERY

【问题讨论】:

    标签: php mysql arrays pdo


    【解决方案1】:

    事实上,你应该在prepare 中使用它,而不是在execute 中。

    return $statement = Zend_Db_Table::getDefaultAdapter()
        ->prepare($QueryString, array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true))
        ->execute($ArrayParams);
    

    PDO::MYSQL_ATTR_USE_BUFFERED_QUERY docs

    因此,出于您的目的,您可以执行以下操作:

    $PrepareParams=array();
    if ($UseBufferedQry) {
        $PrepareParams[PDO::MYSQL_ATTR_USE_BUFFERED_QUERY] = true;
    }
    
    return $statement = Zend_Db_Table::getDefaultAdapter()
        ->prepare($QueryString, $PrepareParams)
        ->execute($ArrayParams);
    

    【讨论】:

    • 非常抱歉,如果问一个蹩脚的问题,我不熟练 php,如您所见,但我仍然有相同的错误消息:Message: SQLSTATE[HY093]: Invalid参数号:绑定变量的数量与标记的数量不匹配 这就是我尝试调用此函数的方式:$qry = "insert into test1 (mod2, recomm) values (?, ?)"; executePreparedQRY($qry, array("a","b"), TRUE);
    • @bazmegakapa 谢谢亲爱的先生,我现在一切都清楚了! :))
    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多