1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00

Update multi-query.xml to En

This commit is contained in:
Mikhail Alferov
2026-02-20 09:07:28 +03:00
committed by GitHub
parent b9527f4076
commit 40c84bce4c

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: d470f625f96a83d65464619297cccad7ce46e743 Maintainer: tmn Status: ready -->
<!-- EN-Revision: 1beae37b6904f55cfd33dbe99ad83a23eb78b144 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="mysqli.multi-query" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>mysqli::multi_query</refname>
<refname>mysqli_multi_query</refname>
<refpurpose>Выполняет один или несколько запросов к базе данных</refpurpose>
<refpurpose>Выполняет запросы к базе данных</refpurpose>
</refnamediv>
<refsect1 role="description">
@@ -22,41 +22,39 @@
<methodparam><type>string</type><parameter>query</parameter></methodparam>
</methodsynopsis>
<para>
Запускает на выполнение один или несколько запросов, перечисленных через
точку с запятой.
Функция отправляет одну или пакет SQL-инструкций, которые требуется выполнить на сервере баз данных. Инструкции перечисляют
через точку с запятой.
</para>
&mysqli.sqlinjection.warning;
<para>
Запросы отправляются асинхронно за один вызов базы данных, но база данных обрабатывает их последовательно.
<methodname>mysqli_multi_query</methodname> ожидает завершения первого запроса, прежде чем вернуть управление PHP.
Затем сервер MySQL обработает следующий запрос в последовательности.
Как только следующий результат будет готов, MySQL будет ждать следующего выполнения <function>mysqli_next_result</function> из PHP.
SQL-инструкции отправляются в одном сетевом запросе к базе данных и обрабатываются последовательно.
Функция <methodname>mysqli_multi_query</methodname> дожидается завершения обработки первой SQL-инструкции, а затем возвращает управление PHP.
Тем временем MySQL-сервер продолжает асинхронно обрабатывать остальные инструкции и готовит
результат для очередного извлечения PHP-функциями.
</para>
<para>
Для обработки нескольких запросов рекомендуется использовать <link linkend="control-structures.do.while">do-while</link>.
Соединение будет занято до тех пор, пока все запросы не будут завершены и их результаты не будут загружены в PHP.
Никакой другой оператор не может быть выдан в том же соединении, пока не будут обработаны все запросы.
Чтобы перейти к следующему запросу в последовательности, используйте <function>mysqli_next_result</function>.
Если следующий результат ещё не готов, mysqli будет ждать ответа от сервера MySQL.
Чтобы проверить, есть ли ещё результаты, используйте <function>mysqli_more_results</function>.
Пакетные запросы часто обрабатывают в цикле <link linkend="control-structures.do.while">do-while</link>.
Соединение останется недоступным для выполнения других SQL-инструкций, пока MySQL не обработает, а PHP не извлечёт результаты пакета инструкций.
Для перехода к следующему результату последовательности вызывают функцию <function>mysqli_next_result</function>.
Модуль mysqli заблокирует работу скрипта, если потребуется дождаться ответа MySQL-сервера о готовности следующего результата.
Завершил ли сервер обработку инструкций и выдачу результатов, проверяют функцией <function>mysqli_more_results</function>.
</para>
<para>
Для запросов, которые производят набор результатов, таких как
<literal>SELECT, SHOW, DESCRIBE</literal> или
<literal>EXPLAIN</literal>, <function>mysqli_use_result</function> или <function>mysqli_store_result</function>
может использоваться для получения набора результатов.
Для запросов, которые не производят набор результатов, те же функции могут использоваться для получения информации,
такой как количество затронутых строк.
Наборы результатов, которые возвращаются инструкциями наподобие <literal>SELECT, SHOW, DESCRIBE</literal>
или <literal>EXPLAIN</literal>, извлекают функцией
<function>mysqli_use_result</function> или <function>mysqli_store_result</function>.
Из запросов, которые не возвращают набор результатов,
этими же функциями получают информацию о количестве затронутых строк или другие метаданные.
</para>
<tip>
<para>
Выполнение запросов <literal>CALL</literal> для хранимых процедур может дать несколько наборов результатов.
Если хранимая процедура содержит запросы <literal>SELECT</literal>,
наборы результатов возвращаются в том порядке, в котором они создаются при выполнении процедуры.
В общем, вызывающая функция не может знать, сколько наборов результатов вернёт процедура,
и должна быть готова получить несколько результатов.
Конечный результат процедуры - это результат статуса, который не включает набор результатов.
Статус показывает, была ли процедура успешной или произошла ошибка.
Выполнение SQL-инструкций <literal>CALL</literal> при вызове хранимых процедур в ряде сценариев возвращает множественные наборы результатов.
Наборы результатов из хранимых процедур с инструкциями <literal>SELECT</literal>
возвращаются по мере выполнения инструкций в порядке определения внутри процедуры.
В общем случае вызывающая сторона не знает, сколько наборов результатов вернёт процедура,
и поэтому готовится получить множественные результаты.
Конечный результат процедуры статус, который не включает набор результатов.
Статус указывает, выполнилась ли процедура успешно или возникла ошибка.
</para>
</tip>
</refsect1>
@@ -70,8 +68,8 @@
<term><parameter>query</parameter></term>
<listitem>
<para>
Строка, содержащая запросы, которые нужно выполнить.
Несколько запросов следует разделять точкой с запятой.
Строка с SQL-инструкциями, которые требуется отправить в запросе и выполнить на сервере.
Инструкции разделяются точкой с запятой.
</para>
</listitem>
</varlistentry>
@@ -82,9 +80,8 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &false;, если первое выражение вызвало ошибку. Чтобы получить доступ
к ошибкам остальных подзапросов, нужно сначала вызвать функцию
<function>mysqli_next_result</function>.
Функция возвращает &false;, если выполнение первой SQL-инструкции завершилось ошибкой.
Перед проверкой ошибок по остальным инструкциям сначала вызывают функцию <function>mysqli_next_result</function>.
</para>
</refsect1>
@@ -96,7 +93,7 @@
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Пример использования <methodname>mysqli::multi_query</methodname></title>
<title>Пример выполнения пакета SQL-инструкций методом <methodname>mysqli::multi_query</methodname></title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
@@ -108,16 +105,16 @@ $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
/* выполнение нескольких запросов */
/* Выполнение пакета SQL-инструкций в одном запросе */
$mysqli->multi_query($query);
do {
/* сохранить набор результатов в PHP */
/* Сохранение набора результатов в PHP */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
}
/* вывести разделитель */
/* Вывод разделителя */
if ($mysqli->more_results()) {
printf("-----------------\n");
}
@@ -135,16 +132,16 @@ $link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
/* выполнение нескольких запросов */
/* Выполнение пакета SQL-инструкций в одном запросе */
mysqli_multi_query($link, $query);
do {
/* сохранить набор результатов в PHP */
/* Сохранение набора результатов в PHP */
if ($result = mysqli_store_result($link)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s\n", $row[0]);
}
}
/* вывести разделитель */
/* Вывод разделителя */
if (mysqli_more_results($link)) {
printf("-----------------\n");
}