Посылает запрос MySQL

# mysql_query

(PHP 4, PHP 5)

mysql_query — Посылает запрос MySQL

Внимание

Данный модуль устарел начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для этой функции:

- mysqli_query()
- PDO::query()

### Описание

function mysql_query(string `$query`, resource `$link_identifier` = NULL): mixed

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);
    ?>

### Смотрите также

- mysql_connect() - Открывает соединение с сервером MySQL
- mysql_error() - Возвращает текст ошибки последней операции с MySQL
- mysql_real_escape_string() - Экранирует специальные символы в строках для использования в выражениях SQL
- mysql_result() - Возвращает данные результата запроса
- mysql_fetch_assoc() - Возвращает ряд результата запроса в качестве ассоциативного массива
- mysql_unbuffered_query() - Посылает запрос MySQL без авто-обработки результата и его буферизации

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open