Podręcznik PHP
Poprzedni |  | Następny

# mysql_query

(PHP 3, PHP 4 )

mysql_query -- Wysyła zapytanie do serwera MySQL

## Opis

resource mysql_query ( string zapytanie [, resource identyfikator_połączenia [, int typ_wyniku]])

mysql_query() wysyła zapytanie do aktywnej bazy na serwerze skojarzonym z podanym identyfikatorem połączenia. Jeżeli `identyfikator_połączenia` nie został podany, wykorzystywane jest ostatnio otwarte połączenie. Jeżeli żadne połączenie nie jest otwarte, podjęta zostanie próba ustanowienia go, poprzez wywołanie mysql_connect() bez argumentów.

Opcjonalny argument `result_mode` może przyjmować wartość MYSQL_USE_RESULT lub MYSQL_STORE_RESULT. Domyślnie używana jest wartość MYSQL_STORE_RESULT, zatem wynik jest buforowany. Odpowiednikiem użycia drugiej opcji jest funkcja mysql_unbuffered_query().

> Notatka: Zapytanie nie powinno kończyć się znakiem średnika.

mysql_query() zwraca identyfikator wyniku (lub `FALSE` w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE. Dla innych zapytań SQL mysql_query() zwraca `TRUE` lub `FALSE` informując czy zapytanie zakończyło się sukcesem czy też nie. Jeśli nie została zwrócona wartość `FALSE` to znaczy, że zapytanie było prawidłowe i może być wykonane przez serwer. Nie mówi natomiast nic o liczbie przetworzonych lub zwróconych wierszy. Jest również możliwe, że zapytanie zostanie wykonane poprawnie, nie przetwarzając lub zwracając żadnych wierszy.

Następujące zapytanie jest niepoprawne składniowo, dlatego mysql_query() zwróci `FALSE`:

Przykład 1. mysql_query()
`<?php $result = mysql_query("SELECT * WHERE 1=1") or die("Zapytanie niepoprawne"); ?>`

Następujące zapytanie jest niepoprawne semantycznie, jeżeli `my_col` nie jest kolumną w tabeli `my_tbl`, dlatego mysql_query() zwróci `FALSE`:

Przykład 2. mysql_query()
`<?php $result = mysql_query("SELECT kolumna FROM tabela") or die("Zapytanie niepoprawne"); ?>`

mysql_query() zwróci `FALSE` również wtedy, gdy nie będzie praw dostępu do tabel wyszczególnionych w zapytaniu.

Przyjmując, że zapytanie się powiodło, można użyć mysql_num_rows() by uzyskać informację o liczbie wierszy zwróconych w instrukcji SELECT, lub mysql_affected_rows() w celu uzyskania liczby wierszy przetworzonych przez instrukcje DELETE, INSERT, REPLACE i UPDATE.

Jedynie po operacjach SELECT, SHOW, EXPLAIN i DESCRIBE mysql_query() zwróci identyfikator wyniku, który można przekazać do funkcji mysql_fetch_array() lub innych funkcji operujących na tablicach wyników. Po wykonaniu operacji na wyniku, można zwolnić zasoby przez niego wykorzystywane wywołując mysql_free_result(). Po zakończeniu działania skryptu pamięć i tak będzie automatycznie zwolniona.

Patrz także: mysql_num_rows(), mysql_affected_rows(), mysql_unbuffered_query(), mysql_free_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_result(), mysql_select_db() i mysql_connect().

Poprzedni | Spis treści | Następny
mysql_ping | Początek rozdziału | mysql_real_escape_string