Do unbuffered queries for one request
mysql, pdo, php, unbuffered
Solution
You can set the attribute on the PDO connection:
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
then run this particular query which result needs to be unbuffered,
$uresult = $pdo->query("SELECT Name FROM City");
while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) {
echo $row['Name'] . PHP_EOL;
}
and then set the attribute back
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
Problem
I'm looking to do unbuffered queries only on some requests. In MySQL I was doing this: ``` $req = mysql_unbuffered_query('SELECT * FROM forum_topics ORDER BY (topic_id/topic_stick) DESC, topic_last_post DESC'); while($data = mysql_fetch_assoc($req)) { // display results... } ``` I looked at PHP doc, and according to it in `pdo` we must proceed this way to do queries unbuffered: ``` $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass'); $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); $uresult = $pdo->query("SELECT Name FROM City"); if ($uresult) { while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { echo $row['Name'] . PHP_EOL; } } ``` But is it possible to do it unbuffered only for the "forum_topics" table results without setting all pdo instance to unbuffered?