如何动态地将PDO语句添加到数组中?

时间:2012-03-02 08:41:49

标签: php mysql arrays pdo

如何将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语句。 那么,如何根据PDO::MYSQL_ATTR_USE_BUFFERED_QUERY值在执行语句中包含$UseBufferedQry

1 个答案:

答案 0 :(得分:2)

事实上,您应该在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);