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...
Дивіться також
- mysqli_execute_query() - готує, зв'язує параметри та виконує SQL-запит
- mysqli_real_query() - Виконання SQL запиту
- mysqli_multi_query() - Виконує один або кілька запитів до бази даних
- mysqli_prepare() - готує SQL вираз до виконання
- mysqli_free_result() - звільняє пам'ять, зайняту результатами запиту