resource mysql_query (string query [, resource link_identifier [, int result_mode]])
mysql_query() отправляет запрос текущей активной БД на сервере, ассоциированной со
специфицированным идентификатором ссылки/link_identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если такой ссылки
нет, функция пытается установить ссылку, как при вызове mysql_connect() без аргументов, и использует её.
Необязательный параметр result_mode может иметь значение MYSQL_USE_RESULT и MYSQL_STORE_RESULT. По умолчанию MYSQL_STORE_RESULT,
т.е. результат буферизуется. См. также mysql_unbuffered_query() - это функция противоположного действия.
Примечание: строка запроса не должна заканчиваться точкой с запятой (;).
Только для операторов SELECT, SHOW, EXPLAIN или DESCRIBE функция mysql_query() возвращает идентификатор ресурса,
FALSE если запрос не был выполнен корректно. Для других типов SQL-операторов
mysql_query() возвращает TRUE при успехе, FALSE при ошибке.
Не-FALSE return-значение означает, что запрос был правильным и может быть выполнен на
сервере. Она ничего не сообщает о количестве задействованных или возвращаемых
рядов. Это отличная возможность для запроса продолжить выполнениt, не задействуя и не возвращая рядов.
Следующий запрос синтаксически неверен, поэтому mysql_query() терпит неудачу и возвращает FALSE:
Пример 1. mysql_query()
<php
$result = mysql_query("SELECT * WHERE 1=1")
or die("Invalid query");
?>
Следующий запрос
семантически неверен, поскольку
my_col не является столбцом таблицы my_tbl, поэтому mysql_query() терпит неудачу и возвращает
FALSE:
Пример 2. mysql_query()
<?php
$result = mysql_query("SELECT my_col FROM my_tbl")
or die ("Invalid query");
?>
mysql_query() терпит также неудачу и возвращает
FALSE, если вы не имеете прав доступа к таблице(-ам), на которую сделана ссылка в
запросе.
Приняв, что запрос прошёл, вы можете вызвать mysql_num_rows() для определения количества рядов, возвращаемых оператором SELECT, или
mysql_affected_rows() для определения количества рядов, задействованных оператором DELETE, INSERT, REPLACE
или UPDATE.
Только для SELECT, SHOW, DESCRIBE или EXPLAIN функция mysql_query()
возвращает новый идентификатор результата, который вы передаёте в
mysql_fetch_array() и другие функции, работающие с результирующими таблицами. По окончании работы
с результирующим набором вы можете освободить ресурсы, ассоциированные с ним, вызвав
mysql_free_result(). В то же время память будет освобождаться автоматически по окончании работы
скрипта.