Выполнение множественных запросов в MySQLi
Приветствую всех моих читателей. Сегодня мы с вами ознакомимся с замечательной вещью, которая существует в MySQLi – это множественные запросы. Множественные запросы – это выполнение больше одного запроса, в одной php команде, то есть, выполнение 2, 3, 5 и более запросов за один заход. Такой возможности не существует в старом расширении MySQL. Но в MySQLi для осуществления такой возможности существует функция – mysqli_multi_query.
Синтаксис этой функции выглядит следующим образом:
mysqli_multi_query($load, $queries);
Первый параметр – это идентификатор соединения с базой данных. Что это такое, мы разбирали в прошлой статье. Второй параметр – это запросы, которые вы хотите выполнить. Каждый запрос разделен точкой с запятой, больше на http://makarou.com/mysqli-%e2%80%93-novaya-versiya-rasshireniya-mysql.
Так же хочу вам сказать сразу, что функция mysqli_multi_query в отличие от mysqli_query, не возвращает результат запроса сразу. Функция возвращает наборы данных, для доступа к которым требуется использовать функции. Для доступа к первому набору данных используется функция mysqli_store_result.
Синтаксис этой функции выглядит вот так:
mysqli_store_result($load);
Функция принимает всего 1 параметр – это идентификатор соединения с базой данных. После выполнения, функция возвращает первый набор данных, который можно использовать для выборки отдельных строк с данными, с помощью функций mysqli_fetch_array и так далее.
Для получения других наборов данных, которые возвращает функция mysqli_multi_query, используются следующие функции. Первая такая функция — это mysqli_more_results, которая осуществляет переход к следующему набору данных.
Синтаксис этой функции выглядит следующим образом:
mysqli_more_results($load);
Функция также принимает всего 1 параметр – это идентификатор соединения с базой данных. После выполнения, функция возвращает булевское значение, которое показывает, есть еще наборы данных или нет. Если есть то, для получения этих данных используется вторая функция, которая называется — mysqli_next_result. Эта функция делает активным или проще сказать текущим, следующий набор данных, для доступа к которому также нужно использовать функцию mysqli_store_result.
Синтаксис mysqli_next_result выгладит вот так:
mysqli_next_result($load);
Функция принимает тоже всего 1 параметр – идентификатор соединения с базой данных.
Вот небольшой пример, который показывает, как пользоваться функциями, которые мы сегодня обсудили:
$load = mysqli_connect("localhost","user","pass","dbname", 3306); $multiq= "SELECT username FROM table1 WHERE id='2';SELECT name FROM table2 WHERE id='2'"; mysqli_multi_query($load,$multiq); $res1=mysqli_store_result($load); $resp1=mysqli_fetch_array($res1); echo $resp['username']; mysqli_free_result($res1); mysqli_more_results($load); mysqli_next_result($load); $res2=mysqli_store_result($load); $resp2=mysqli_fetch_array($res2); echo $resp2['name']; mysqli_free_result('$res2');
Вот и все что могу сказать о множественных запросах. Вроде бы сложного ничего нет, но если у вас есть вопросы, пишите, я обязательно на них отвечу.