(PHP 4 >= 4.0.6, PHP 5)
mysql_unbuffered_query — Wysyła zapytanie do serwera MySQL nie pobierając i nie buforując wyniku
$zapytanie
[, resource $identyfikator_połączenia
] )
mysql_unbuffered_query() wysyła
zapytanie
SQL do serwera MySQL, nie pobierając
i nie buforując wyników zapytań, w przeciwieństwie do
mysql_query().
To oszczędza znaczną ilość pamięci w zapytaniach SQL, które
generują duże zbiory wynikowe. Można pracować na zbiorze wynikowym
natychmiast po pobraniu pierwszego rekordu. Nie trzeba czekać, aż
zapytanie SQL zostanie w bazie danych wykonane do końca.
Aby posługiwać się funkcją mysql_unbuffered_query()
z kilkoma połączeniami do baz danych, należy podawać opcjonalny parametr
identyfikator_połączenia
określający, które
połączenie ma zostać wykorzystane.
zapytanie
Zapytanie SQL do wykonania
Dane w zapytaniu powinny być poprzedzone poprawnymi znakami ucieczki.
identyfikator_połączenia
Połączenie MySQL.
Jeśli identyfikator połączenia nie zostanie podany, użyte zostanie ostatnie
połączenie otwarte przez mysql_connect(). Jeśli połączenie
takie nie zostanie znalezione, funkcja spróbuje nawiązać połączenie tak, jakby
wywołana została funkcja mysql_connect() bez argumentów.
Jeśli żadne połączenie nie zostanie znalezione lub nawiązane, wygenerowany
zostanie błąd poziomu E_WARNING
.
Dla wyrażeń SELECT, SHOW, DESCRIBE lub EXPLAIN,
mysql_unbuffered_query()
zwraca zasób w przypadku sukcesu lub FALSE
gdy
nastąpi niepowodzenie.
Dla innych typów wyrażeń SQL, UPDATE, DELETE, DROP, etc,
mysql_unbuffered_query() zwróci TRUE
w przypadku
powodzenia lub FALSE
gdy nastąpi błąd.
Informacja:
Oprócz korzyści, funkcja mysql_unbuffered_query() wprowadza pewne ograniczenia: nie można użyć funkcji mysql_num_rows() i mysql_data_seek() na zbiorze wynikowym, zwróconym przez mysql_unbuffered_query(). Trzeba także pobrać wszystkie wiersze ze zbioru wynikowego niebuforowanego zapytania SQL przed wysłaniem kolejnego.