mysqli::query

mysqli_query

(PHP 5, PHP 7, PHP 8)

mysqli::query -- mysqli_query — Виконує запит до бази даних

Опис

Об'єктно-орієнтований стиль

public mysqli::query(string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result|bool

Процедурний стиль

mysqli_query(mysqli $mysql, string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result|bool

Виконує запит query до бази даних.

Увага

Попередження безпеки: SQL-ін'єкція

Замість складання рядку запиту з включенням змінних значень необхідно готувати запити. Або рядки запиту мають бути екрановані функцією mysqli_real_escape_string() та правильно відформатовані.

Для не DML-запитів (не INSERT, UPDATE чи DELETE), ця функція рівносильна виклику функції mysqli_real_query(), а затемmysqli_use_result() або mysqli_store_result()

Зауваження :

Якщо довжина передається в функцію mysqli_query() вирази більше значення системної змінної max_allowed_packetсервера, будет сгенерирована ошибка. MySQL-драйвер (mysqlnd) та клієнтська бібліотека MySQL (libmysqlclient) викидають різні коди помилок. Поведінка функції буде такою:

  • mysqlndна платформі Linux повертає код помилки 1153. Повідомлення про помилку означає розмір пакета перевищуєmax_allowed_packetбайт.

  • mysqlndна платформі Windows повертає код помилки 2006 року. Це повідомлення про помилку означає відмову сервера.

  • libmysqlclientна всіх платформах повертає код помилки 2006 року. Це повідомлення про помилку означає відмову сервера.

Список параметрів

mysql

Тільки для процедурного стилю: об'єкт mysqli, який повернула функція mysqli_connect()или функцияmysqli_init()

query

Текст запиту.

result_mode

Режим результату може бути однією з трьох констант, які вказують, як результат буде повернено сервером MySQL.

MYSQLI_STORE_RESULT (за замовчуванням) – повертає об'єкт mysqli_result із буферизованим набором результатів.

MYSQLI_USE_RESULT - Повертає об'єкт mysqli_result із небуферизованим набором результатів. Поки є відкладені записи, що очікують вибірки, лінія з'єднання буде зайнята і всі наступні дзвінки повертатимуть помилку Commands out of sync. Щоб уникнути помилки, всі записи повинні бути отримані з сервера або набір результатів має бути відкинуто шляхом виклику mysqli_free_result()

MYSQLI_ASYNC (Доступно з mysqlnd) - запит виконується асинхронно, набір результатів відразу не повертається. Потім викликають функцію mysqli_poll() для отримання результатів за цими запитами. Можна використовувати у поєднанні з константою MYSQLI_STORE_RESULT або MYSQLI_USE_RESULT

Значення, що повертаються

Повертає false у разі виникнення помилки. У разі успішного виконання запитів, які створюють набір результатів, таких як SELECT, SHOW, DESCRIBEилиEXPLAIN, функцияmysqli_query() поверне об'єкт mysqli_result. Для решти успішних запитів mysqli_query() поверне true

Помилки

Якщо сповіщення про помилки mysqli включено (MYSQLI_REPORT_ERROR) та запитана операція не вдалася, видається попередження. Якщо, крім того, встановлено режим MYSQLI_REPORT_STRICT, натомість буде викинуто виняток mysqli_sql_exception

Приклади

Приклад #1 Приклад використання mysqli::query()****

Об'єктно-орієнтований стиль

Loading...

Процедурний стиль

Loading...

Результат виконання наведених прикладів:

Таблица myCity создана.
Запрос SELECT вернул 10 строк.

Fatal error: Uncaught mysqli_sql_exception: Commands out of sync; you can't run this command now in...

Дивіться також