Php mysql use result

mysqli_use_result

Используется для подготовки к использованию результирующего набора последнего запроса, запущенного функцией mysqli_real_query() .

Чтобы результаты запроса стали доступны, после самого запроса необходимо вызывать либо эту функцию, либо mysqli_store_result() . Также вызов какой-либо из них предотвратит отказ следующих запросов на этом же соединении.

Замечание:

mysqli_use_result() не передаёт весь результирующий набор на клиента, а следовательно невозможно воспользоваться функцией mysqli_data_seek() , чтобы перемещаться по нему. Для этого нужно воспользоваться функцией mysqli_store_result() . mysqli_use_result() не следует использовать, если на стороне клиента данные результирующего набора долго обрабатываются, так как это задерживает работу сервера и не даёт другим процессам обновлять таблицы, данные из которых есть в результирующем наборе.

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

У этой функции нет параметров.

Возвращаемые значения

Возвращает небуферизованный объект результата запроса или false в случае возникновения ошибки.

Ошибки

Если уведомления об ошибках mysqli включены ( MYSQLI_REPORT_ERROR ) и запрошенная операция не удалась, выдаётся предупреждение. Если, кроме того, установлен режим MYSQLI_REPORT_STRICT , вместо этого будет выброшено исключение mysqli_sql_exception .

Примеры

Пример #1 Пример использования mysqli::use_result()

$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

/* проверка соединения */
if ( mysqli_connect_errno ()) printf ( «Не удалось подключиться: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* выполняем мультизапрос */
if ( $mysqli -> multi_query ( $query )) do /* получаем первый результирующий набор */
if ( $result = $mysqli -> use_result ()) while ( $row = $result -> fetch_row ()) printf ( «%s\n» , $row [ 0 ]);
>
$result -> close ();
>
/* печатаем разделитель */
if ( $mysqli -> more_results ()) printf ( «——————\n» );
>
> while ( $mysqli -> next_result ());
>

/* закрываем соединение */
$mysqli -> close ();
?>

$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

/* проверка соединения */
if ( mysqli_connect_errno ()) printf ( «Не удалось подключиться: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* выполняем мультизапрос */
if ( mysqli_multi_query ( $link , $query )) do /* получаем первый результирующий набор */
if ( $result = mysqli_use_result ( $link )) while ( $row = mysqli_fetch_row ( $result )) printf ( «%s\n» , $row [ 0 ]);
>
mysqli_free_result ( $result );
>
/* печатаем разделитель */
if ( mysqli_more_results ( $link )) printf ( «——————\n» );
>
> while ( mysqli_next_result ( $link ));
>

/* закрываем соединение */
mysqli_close ( $link );
?>

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

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

Смотрите также

  • mysqli_real_query() — Выполнение SQL запроса
  • mysqli_store_result() — Передаёт на клиента результирующий набор последнего запроса

User Contributed Notes 1 note

> One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

Читайте также:  Java completablefuture with timeout

Another way of understanding the «blocking» behavior of this «use_result» method is that by using this method (or the MYSQLI_USE_RESULT flag on the «query» method), if attempting to run a second query of any kind — updates, inserts, selects, or other — while still working with these first results, the second query will fail. Checking mysqli->error, you should get a «Commands out of sync» error on the second query call.

However, if you use the «store_result» method (or the default MYSQLI_STORE_RESULT flag on the «query» method) instead, the second query will execute just fine.

Just to demonstrate this «blocking» behavior of this «use_result» method, the second query on line 7 below would otherwise fail if you instead used «use_result» on line 3:

$mysqli -> real_query ( ‘SELECT * FROM `test`’ );
$query = $mysqli -> store_result ();
while ( $row = $query -> fetch_assoc ()) $id = (int) $row [ ‘id’ ];
$query2 = $mysqli -> query ( «UPDATE `test` SET `label` = md5(rand()) WHERE `id` = $id » );
>
?>

Источник

mysqli_use_result

Используется для подготовки к использованию результирующего набора последнего запроса, запущенного функцией mysqli_real_query() .

Чтобы результаты запроса стали доступны, после самого запроса необходимо вызывать либо эту функцию, либо mysqli_store_result() . Также вызов какой-либо из них предотвратит отказ следующих запросов на этом же соединении.

Замечание:

mysqli_use_result() не передает весь результирующий набор на клиента, а следовательно невозможно воспользоваться функцией mysqli_data_seek() , чтобы перемещаться по нему. Для этого нужно воспользоваться функцией mysqli_store_result() . mysqli_use_result() не следует использовать, если на стороне клиента данные результирующего набора долго обрабатываются, так как это задерживает работу сервера и не дает другим процессам обновлять таблицы, данные из которых есть в результирующем наборе.

Возвращаемые значения

Возвращает не буферизованный объект результата запроса или FALSE в случае ошибки.

Примеры

Пример #1 Пример использования mysqli::use_result()

$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

/* проверка соединения */
if ( mysqli_connect_errno ()) printf ( «Не удалось подключиться: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* выполняем мультизапрос */
if ( $mysqli -> multi_query ( $query )) do /* получаем первый результирующий набор */
if ( $result = $mysqli -> use_result ()) while ( $row = $result -> fetch_row ()) printf ( «%s\n» , $row [ 0 ]);
>
$result -> close ();
>
/* печатаем разделитель */
if ( $mysqli -> more_results ()) printf ( «——————\n» );
>
> while ( $mysqli -> next_result ());
>

/* закрываем соединение */
$mysqli -> close ();
?>

$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

Читайте также:  Иконки

/* проверка соединения */
if ( mysqli_connect_errno ()) printf ( «Не удалось подключиться: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* выполняем мультизапрос */
if ( mysqli_multi_query ( $link , $query )) do /* получаем первый результирующий набор */
if ( $result = mysqli_use_result ( $link )) while ( $row = mysqli_fetch_row ( $result )) printf ( «%s\n» , $row [ 0 ]);
>
mysqli_free_result ( $result );
>
/* печатаем разделитель */
if ( mysqli_more_results ( $link )) printf ( «——————\n» );
>
> while ( mysqli_next_result ( $link ));
>

/* закрываем соединение */
mysqli_close ( $link );
?>

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

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

Источник

mysqli_use_result

mysqli_use_result() is used to initiate the retrieval of a result set from the last query executed using the mysqli_real_query() function on the database connection specified by the link parameter. Either this or the mysqli_store_result() function must be called before the results of a query can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.

Замечание: The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result() . One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

Возвращаемые значения

Returns an unbuffered result object or FALSE if an error occurred.

Смотрите также

mysqli_real_query() и mysqli_store_result() .

Примеры

Пример 1. Object oriented style

/* check connection */
if ( mysqli_connect_errno ()) printf ( «Connect failed: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* execute multi query */
if ( $mysqli -> multi_query ( $query )) do /* store first result set */
if ( $result = $mysqli -> use_result ()) while ( $row = $result -> fetch_row ()) printf ( «%s\n» , $row [ 0 ]);
>
$result -> close ();
>
/* print divider */
if ( $mysqli -> more_results ()) printf ( «——————\n» );
>
> while ( $mysqli -> next_result ());
>

/* close connection */
$mysqli -> close ();
?>

Пример 2. Procedural style

/* check connection */
if ( mysqli_connect_errno ()) printf ( «Connect failed: %s\n» , mysqli_connect_error ());
exit();
>

$query = «SELECT CURRENT_USER();» ;
$query .= «SELECT Name FROM City ORDER BY ID LIMIT 20, 5» ;

/* execute multi query */
if ( mysqli_multi_query ( $link , $query )) do /* store first result set */
if ( $result = mysqli_use_result ( $link )) while ( $row = mysqli_fetch_row ( $result )) printf ( «%s\n» , $row [ 0 ]);
>
mysqli_free_result ( $result );
>
/* print divider */
if ( mysqli_more_results ( $link )) printf ( «——————\n» );
>
> while ( mysqli_next_result ( $link ));
>

Читайте также:  Javascript условие в цикл for

/* close connection */
mysqli_close ( $link );
?>

Результат выполнения данного примера:

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

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Copyright © 2005-2016 Project.Net.Ru

Источник

mysqli_use_result

mysqli->use_result — Начать поиск результатов запроса.

mysqli_result mysqli_use_result ( mysqli link )

Объектно-ориентированный стиль вызова (method):

class mysqli <
mysqli_result use_result ( void )
>

mysqli_use_result() используется, чтобы начать поиск результатов запроса из последних запросов выполняется с помощью mysqli_real_query() function on the database connection specified by the link parameter. Either this or the mysqli_store_result() Функция должна вызываться до получения результатов запроса can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.

Замечание: The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result() . One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

Возвращаемые значения

Returns an unbuffered result object or FALSE if an error occurred.

Примеры

Пример 1. Объектно-ориентированный стиль вызова
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) < printf("Connect failed: %s\n", mysqli_connect_error()); exit(); >$query = "SELECT CURRENT_USER();"; $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5"; /* execute multi query */ if ($mysqli->multi_query($query)) < do < /* store first result set */ if ($result = $mysqli->use_result()) < while ($row = $result->fetch_row()) < printf("%s\n", $row[0]); >$result->close(); > /* print divider */ if ($mysqli->more_results()) < printf("-----------------\n"); >> while ($mysqli->next_result()); > /* close connection */ $mysqli->close();
Пример 2. Процедурный стиль вызова
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) < printf("Connect failed: %s\n", mysqli_connect_error()); exit(); >$query = "SELECT CURRENT_USER();"; $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5"; /* execute multi query */ if (mysqli_multi_query($link, $query)) < do < /* store first result set */ if ($result = mysqli_use_result($link)) < while ($row = mysqli_fetch_row($result)) < printf("%s\n", $row[0]); >mysqli_free_result($result); > /* print divider */ if (mysqli_more_results($link)) < printf("-----------------\n"); >> while (mysqli_next_result($link)); > /* close connection */ mysqli_close($link);

Результат выполнения данного примера:

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

Источник

Оцените статью