Heim  >  Artikel  >  php教程  >  Der Unterschied zwischen den mysqli_query-Parametern MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT von PHP

Der Unterschied zwischen den mysqli_query-Parametern MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT von PHP

WBOY
WBOYOriginal
2016-09-22 08:42:121642Durchsuche

In diesem Artikel wird hauptsächlich der Unterschied zwischen den mysqli_query-Parametern MYSQLI_STORE_RESULT und MYSQLI_USE_RESULT vorgestellt. In diesem Artikel werden 5 Unterschiede zwischen diesen beiden Parametern aufgeführt

Obwohl NOSQL populär geworden ist, habe ich das Gefühl, dass SQL immer noch Mainstream ist
Als ich heute das PHP-Manul durchgesehen habe, habe ich festgestellt, dass MySQL-Abfragen einen interessanten Parameter übergeben können

@<span style="color: #008080;">mysqli_query</span>(<span style="color: #800080;">$this</span>->sql,<span style="color: #800080;">$SQL</span>,(<span style="color: #800080;">$method</span> ? <span style="color: #008080;">MYSQLI_USE_RESULT</span> : <span style="color: #008080;">MYSQLI_STORE_RESULT</span>));

Diese beiden Parameter werden im PHP-Handbuch wie folgt erklärt.

Either the <span style="color: #008080;">constant</span> <span style="color: #008080;">MYSQLI_USE_RESULT</span> or <span style="color: #008080;">MYSQLI_STORE_RESULT</span> depending on the desired behavior. By <span style="color: #0000ff;">default</span>, <span style="color: #008080;">MYSQLI_STORE_RESULT</span> is used.

Wenn nichts übergeben wird, ist der Standardwert MYSQLI_STORE_RESULT.

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 , Verfügbar 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.

Referenzlektüre: http://www.manongjc.com/article/1195.html

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