PHP 8.4.1 Released!

mysql_unbuffered_query

(PHP 4 >= 4.0.6, PHP 5)

mysql_unbuffered_query Sendet eine SQL-Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern

Warnung

Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt. Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL. Weitere Informationen bietet der Ratgeber MySQL: Auswahl einer API. Alternativen zu dieser Funktion umfassen:

Beschreibung

mysql_unbuffered_query(string $query, resource $link_identifier = NULL): resource

mysql_unbuffered_query() sendet die SQL-Abfrage query an MySQL, ohne dass die Datensätze des Ergebnisses automatisch geholt und gepuffert werden, wie es bei der Verwendung von mysql_query() der Fall ist. Dies spart eine erhebliche Menge an Speicher bei SQL-Abfragen ein, die große Ergebnismengen zurückgeben und Sie können unmittelbar mit dem Abfrageergebnis arbeiten, sobald der erste Datensatz gefunden wurde: Sie müssen nicht darauf warten, bis die gesamte SQL-Abfrage abgeschlossen ist. Um mysql_unbuffered_query() verwenden zu können während mehrere Datenbankverbindungen geöffnet sind, müssen Sie den optionalen Parameter link_identifier angeben, um zu identifizieren, welche Verbindung Sie verwenden möchten.

Parameter-Liste

query

Die auszuführende SQL-Abfrage.

Werte innerhalb der Abfrage sollten mit korrekt maskiert sein.

link_identifier

Die MySQL-Verbindung. Wird die Verbindungskennung nicht angegeben, wird die letzte durch mysql_connect() geöffnete Verbindung angenommen. Falls keine solche Verbindung gefunden wird, wird versucht, eine Verbindung aufzubauen, wie es beim Aufruf von mysql_connect() ohne Angabe von Argumenten der Fall wäre. Falls zufällig keine Verbindung gefunden oder aufgebaut werden kann, wird eine Warnung der Stufe E_WARNING erzeugt.

Rückgabewerte

Für SELECT-, SHOW-, DESCRIBE- oder EXPLAIN-Anweisungen gibt mysql_unbuffered_query() bei Erfolg eine Ressource zurück oder false bei einem Fehler.

Für alle anderen von SQL-Anweisungen wie INSERT, UPDATE, DELETE, DROP, etc, gibt mysql_unbuffered_query() bei Erfolg true zurück oder false bei Fehlern.

Anmerkungen

Hinweis:

Die Vorteile von mysql_unbuffered_query() haben ihren Preis: Auf ein Ergebnis von mysql_unbuffered_query() können die Funktionen mysql_num_rows() und mysql_data_seek() nicht angewendet werden. Ausserdem müssen Sie sicherstellen, dass Sie alle Datensätze des Ergebnisses einer ungepufferten SQL-Abfrage abgeholt haben. Erst dann können Sie eine neue SQL-Abfrage bei Verwendung derselben Verbindung link_identifier an MySQL absetzen.

Siehe auch

add a note

User Contributed Notes 3 notes

up
3
frappyjohn at dos2linux dot org
21 years ago
Don't let the two hands confuse you, these are both advantages (they should really be on the same hand):

On the one hand, this saves a considerable amount of memory with SQL queries that produce large result sets.

On the other hand, you can start working on the result set immediately ...
up
3
crazyone at crazycoders dot net
16 years ago
You are NOT required to read all rows from the resultset when using unbuffered query, you may opt out at any time and use mysql_free_result. Imagine looking at 1 million row when the first 50 suffice? Just free the result and you are good to go again.
up
0
post at jfl dot dk
20 years ago
If using optimized MyISAM tables I guess there is a big advantage with this function as it is possible to do selects and inserts on the same time as long as no rows in the table gets updated.
To Top