I am getting the following error in my PHP code:
PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement:fetchAll(). Alternatively if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
These are the queries I'm running which end up terminating with this error:
$db->exec("CREATE TEMPORARY TABLE {$dp}docs_tally (tally INT(11),date_clicked INT(11),accountID INT (11))");
$tally = $db->prepare(" SET @sum1 = 0;
INSERT INTO {$dp}docs_tally
SELECT (@sum1 := @sum1 + 1) as tally, date_clicked, accountID
FROM (
SELECT date_clicked,accountID
FROM `repository` drep
JOIN `clicks_or_downloads` dclick ON dclick.documentID = drep.ID
WHERE accountID = ?
ORDER BY dclick.ID ASC
) vtable
GROUP BY date_clicked");
foreach ($accs_data as $row){
$tally->execute(array($row['accountID']));
}
I have tried adding array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true) to the prepare statement as given here (http://php.net/manual/en/ref.pdo-mysql.php). I've also set:
$this->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
When I then run getAttribute on this parameter it does return true, so the question is why when this is attribute is turned on do I still get the error telling me to turn it on?