(PHP 4, PHP 5)
mysql_query — Посылает запрос MySQL
Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:
mysql_query() посылает один запрос
(посылка нескольких запросов не поддерживается) активной базе
данных сервера, на который ссылается переданный дескриптор
link_identifier
.
query
SQL-запрос
Запрос не должен заканчиваться точкой с запятой. Данные в запросе должны быть корректно проэкранированы.
link_identifier
Соединение MySQL. Если идентификатор соединения не был указан,
используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено,
функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров.
Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING
.
Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов,
возвращающих результат из нескольких рядов,
mysql_query() возвращает дескриптор результата
запроса (resource), или FALSE
в случае ошибки.
Для других типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и других,
mysql_query() возвращает TRUE
в случае успеха
и FALSE
в случае ошибки.
Полученный дескриптор результата нужно передать в функцию mysql_fetch_assoc() или любую другую функцию, работающую с результатами запросов.
Используйте mysql_num_rows() для выяснения количества рядов в результате SELECT-запроса или mysql_affected_rows() для выяснения количества обработанных рядов запросами DELETE, INSERT, REPLACE и UPDATE.
mysql_query() также завершится с ошибкой и
вернет FALSE
, если у пользователя нет доступа к какой-либо из
таблиц, фигурирующих в запросе.
Пример #1 Неверный запрос
Следующий запрос составлен неправильно и
mysql_query() вернёт FALSE
.
<?php
$result = mysql_query('SELECT * WHERE 1 = 1');
if (!$result) {
die('Неверный запрос: ' . mysql_error());
}
?>
Пример #2 Верный запрос
Следующий запрос верен, поэтому mysql_query() вернет resource.
<?php
// Эти данные, к примеру, могли быть получены от пользователя
$firstname = 'fred';
$lastname = 'fox';
// Формируем запрос
// Это лучший способ выполнить SQL-запрос
// Еще примеры можно найти в документации mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Выполняем запрос
$result = mysql_query($query);
// Проверяем результат
// Это показывает реальный запрос, посланный к MySQL, а также ошибку. Удобно при отладке.
if (!$result) {
$message = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}
// Используем результат
// Попытка напечатать $result не выведет информацию, которая в нем хранится
// Необходимо использовать какую-либо mysql-функцию, работающую с результатом запроса
// См. также mysql_result(), mysql_fetch_array(), mysql_fetch_row() и т.п.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// Освобождаем ресурсы, ассоциированные с результатом
// Это делается автоматически в конце скрипта
mysql_free_result($result);
?>