Heim  >  Artikel  >  类库下载  >  Der Unterschied zwischen MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT

Der Unterschied zwischen MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT

高洛峰
高洛峰Original
2016-10-10 09:37:281229Durchsuche

Dieser Artikel stellt hauptsächlich den Unterschied zwischen den mysqli_query-Parametern MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT vor. Dieser Artikel gibt 5 Unterschiede zwischen diesen beiden Parametern an

Obwohl nosql geworden ist beliebt, ich habe das Gefühl, dass SQL immer noch Mainstream ist
Als ich heute PHP Manul durchstöberte, stellte ich fest, dass MySQLi-Abfragen einen interessanten Parameter übergeben können

@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));

Ich bin mit diesen beiden in PHP Manul konfrontiert. Die Parameter werden erklärt so was.

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

Wenn nichts übergeben wird, wird standardmäßig MYSQLI_STORE_RESULT verwendet.

Jemand hat dies auf phpmanul gesagt: Wenn wir große Datenmengen abrufen müssen, verwenden wir MYSQLI_USE_RESULT

Tatsächlich ist der Unterschied zwischen diesen beiden Parametern immer noch sehr groß.

(1) Der Unterschied liegt im Abrufen der Zeilen der Ergebnismenge vom Server.
(2) MYSQLI_USE_RESULT startet die Abfrage, ruft jedoch keine Zeilen ab
(3) MYSQLI_STORE_RESULT ruft alle Zeilen sofort ab
(4) MYSQLI_STORE_RESULT ruft die Zeilen ab, wenn die Ergebnismenge vom Server abgerufen wird, und weist sie zu Speicher dafür, speichern Sie es im Client und rufen Sie dann mysqli_fetch_array() auf. Es wird niemals ein Fehler zurückgegeben, da nur die Zeilen von der Datenstruktur getrennt werden, die die Ergebnismenge beibehalten hat. Die Rückgabe von NULL durch mysqli_fetch_array() erfolgt immer zeigt an, dass das Ende der Ergebnismenge erreicht wurde.
(5) MYSQLI_USE_RESULT selbst ruft keine Zeilen ab, sondern startet nur einen zeilenweisen Abruf, was bedeutet, dass dieser von selbst abgeschlossen werden muss, indem für jede Zeile mysqli_fetch_array() aufgerufen wird. In diesem Fall weist die Rückgabe von NULL durch mysqli_fetch_array() unter normalen Umständen immer noch darauf hin, dass das Ende des Ergebnissatzes erreicht wurde, es kann jedoch auch darauf hinweisen, dass bei der Kommunikation mit dem Server ein Fehler aufgetreten ist.

Zusammenfassung

Im Vergleich zu MYSQLI_USE_RESULT hat MYSQLI_STORE_RESULT höhere Speicher- und Verarbeitungsanforderungen. Da die gesamte Ergebnismenge auf dem Client verwaltet wird, sind die Kosten für die Speicherzuweisung und die Erstellung von Datenstrukturen sehr hoch. Ja, wenn Sie mehrere Zeilen gleichzeitig abrufen möchten, verwenden Sie MYSQLI_USE_RESULT.

MYSQLI_USE_RESULT hat einen geringeren Speicherbedarf, da nur genügend Speicherplatz für jede einzelne verarbeitete Zeile zugewiesen wird. Dies geht schneller, da keine komplexen Datenstrukturen für die Ergebnismenge erstellt werden müssen. MYSQLI_USE_RESULT hingegen stellt eine größere Belastung für den Server dar, der Zeilen im Ergebnissatz behalten muss, bis der Client geeignet erscheint, alle Zeilen abzurufen.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

In Verbindung stehende Artikel

Mehr sehen