mysqli::multi_query

mysqli_multi_query

(PHP 5, PHP 7, PHP 8)

mysqli::multi_query -- mysqli_multi_query — Виконує один або кілька запитів до бази даних

Опис

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

public mysqli::multi_query(string $query): bool

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

mysqli_multi_query(mysqli $mysql, string $query): bool

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

Увага

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

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

Запити надсилаються асинхронно за один виклик бази даних, але база даних обробляє їх послідовно . mysqli_multi_query() очікує завершення першого запиту, перш ніж повернути керування PHP. Потім сервер MySQL обробить наступний запит у послідовності. Як тільки наступний результат буде готовий, MySQL чекатиме наступного виконання mysqli_next_result()из PHP.

Для обробки кількох запитів рекомендується використовувати do-while. З'єднання буде зайнято доти, доки всі запити не будуть завершені та їх результати не будуть завантажені до PHP. Ніякий інший оператор не може бути виданий у тому ж з'єднанні, доки не будуть опрацьовані всі запити. Щоб перейти до наступного запиту у послідовності, використовуйте mysqli_next_result(). Якщо наступний результат ще не готовий, на mysqli буде чекати відповіді від сервера MySQL. Щоб перевірити, чи є результати, використовуйте mysqli_more_results()

Для запитів, які виробляють набір результатів, таких як SELECT, SHOW, DESCRIBEилиEXPLAIN mysqli_use_result() або mysqli_store_result() може використовуватись для отримання набору результатів. Для запитів, які не роблять набір результатів, ті ж функції можуть використовуватися для отримання інформації, такої як кількість порушених рядків.

Підказка

Виконання запитів CALL для процедур, що зберігаються, може дати кілька наборів результатів. Якщо процедура, що зберігається, містить запити SELECTнабори результатів повертаються в тому порядку, в якому вони створюються при виконанні процедури. Загалом, функція, що викликає, не може знати, скільки наборів результатів поверне процедура, і повинна бути готова отримати кілька результатів. Кінцевий результат процедури - результат статусу, який включає набір результатів. Статус показує, чи була процедура успішною чи помилка.

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

mysql

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

query

Рядок, що містить запити, які потрібно виконати. Декілька запитів слід розділяти крапкою з комою.

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

Повертає **false**якщо перший вираз викликав помилку. Щоб отримати доступ до помилок інших підзапитів, потрібно спочатку викликати функцію mysqli_next_result()

Помилки

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

Приклади

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

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

Loading...

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

Loading...

Висновок наведених прикладів буде схожим на:

my_user@localhost
-----------------
Amersfoort
Maastricht
Dordrecht
Leiden
Haarlemmermeer

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

  • mysqli_query() - Виконує запит до бази даних
  • mysqli_use_result() - Готує результуючий набір на сервері для використання
  • mysqli_store_result() - передає на клієнта результуючий набір останнього запиту
  • mysqli_next_result() - Підготовка наступного доступного результуючого набору з multi_query
  • mysqli_more_results() - Перевірка, чи є ще результати у мультизапиті