dllhell
dllhell

Reputation: 2014

How to dynamically add a PDO statement into array?

How do I dynamically add a PDO statement into array?
I would like write a function as in example:

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);
} 

But PDO::MYSQL_ATTR_USE_BUFFERED_QUERY is always understood as another query param, not as a PDO statement. So, how do I include PDO::MYSQL_ATTR_USE_BUFFERED_QUERY in the execute statement depending on $UseBufferedQry value?

Upvotes: 1

Views: 256

Answers (1)

kapa
kapa

Reputation: 78671

In fact, you should use this in prepare, not in 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

So for your purposes, you could do something like:

$PrepareParams=array();
if ($UseBufferedQry) {
    $PrepareParams[PDO::MYSQL_ATTR_USE_BUFFERED_QUERY] = true;
}

return $statement = Zend_Db_Table::getDefaultAdapter()
    ->prepare($QueryString, $PrepareParams)
    ->execute($ArrayParams);

Upvotes: 2

Related Questions