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:
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user