Gepufferte und ungepufferte Abfragen
  
   Abfragen werden standardmäßig im gepufferten Modus ausgeführt. Das
   bedeutet, dass die Abfrageergebnisse sofort vom MySQL-Server an PHP
   übertragen werden und dann im Speicher des PHP-Prozesses gehalten werden.
   Dies ermöglicht weitere Aktionen wie die Anzahl der Zeilen zu zählen und
   den aktuellen Ergebniszeiger zu verschieben (zu suchen). Außerdem ist es
   möglich, weitere Abfragen über dieselbe Verbindung durchzuführen, während
   die Ergebnismenge verarbeitet wird. Der Nachteil des gepufferten Modus ist,
   dass größere Ergebnismengen viel Speicherplatz benötigen können. Der
   Speicher bleibt so lange belegt, bis alle Verweise auf die Ergebnismenge
   aufgehoben sind oder die Ergebnismenge explizit freigegeben wurde, was
   spätestens beim Beenden der Abfrage automatisch geschieht. Weil beim
   gepufferten Modus die gesamte Ergebnismenge auf einmal gespeichert wird,
   wird auch der Ausdruck "store result" (Ergebnis speichern) verwendet.
  
  Hinweis: 
   
    Wenn die Bibliothek libmysqlclient verwendet wird, wird der für eine
    Ergebnismenge verwendete Speicher nicht zum PHP-Speicherlimit gezählt, es
    sei denn, die Daten werden in PHP-Variablen abgerufen. Mit mysqlnd wird
    die gesamte Ergebnismenge in den Speicher mit eingerechnet.
   
  
  
   Ungepufferte MySQL-Abfragen führen die Abfrage aus und warten dann darauf,
   dass die Daten vom MySQL-Server abgerufen werden. Dadurch wird zwar weniger
   Speicher von PHP verwendet, aber die Last auf dem Server kann steigen.
   Solange nicht die gesamte Ergebnismenge vom Server abgerufen wurde, können
   keine weiteren Abfragen über dieselbe Verbindung gesendet werden.
   Ungepufferte Abfragen können auch als "use result" (Ergebnis verwenden)
   bezeichnet werden. Nachdem alle Zeilen der Ergebnismenge abgerufen wurden,
   ist die Ergebnismenge weg, und kann nicht mehr durchlaufen werden.
  
  
   Aufgrund dieser Merkmale sollten ungepufferte Abfragen nur verwendet
   werden, wenn eine große Ergebnismenge erwartet wird, die sequentiell
   verarbeitet werden soll. Ungepufferte Abfragen weisen eine Reihe von
   Fallstricken auf, die ihre Verwendung erschweren, z. B. ist die Anzahl der
   Zeilen in der Ergebnismenge erst bekannt, nachdem die letzte Zeile
   abgerufen wurde. Gepufferte Abfragen sind die einfachere und flexiblere
   Lösung, um Ergebnismengen zu verarbeiten.
  
  
   Da standardmäßig gepufferte Abfragen verwendet werden, zeigen die folgenden
   Beispiele, wie ungepufferte Abfragen mit der jeweiligen API ausgeführt
   werden.
  
  
   Beispiel #1 Beispiel für ungepufferte Abfragen: mysqli
   
<?php
$mysqli  = new mysqli("localhost", "my_user", "my_password", "world");
$unbufferedResult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);
foreach ($unbufferedResult as $row) {
    echo $row['Name'] . PHP_EOL;
}
?>
    
   
  
   Beispiel #2 Beispiel für ungepufferte Abfragen: pdo_mysql
   
<?php
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_password');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$unbufferedResult = $pdo->query("SELECT Name FROM City");
foreach ($unbufferedResult as $row) {
    echo $row['Name'] . PHP_EOL;
}
?>