[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: multi_query - помогите разобраться
Kusss
Для целостности данных нужно выполнить 2 запроса. Но во втором мне нужно получить номер записи, которая записалась.
Правильно ли будет вот такая конструкция ?

$sql = "INSERT INTO `table1` SET number = 1; ";
$sql .= "INSERT INTO `table2` SET number = 1, lot = 1 ";
$this->mysqli->multi_query($sql);
$i = 0;
while ($this->mysqli->next_result()) {
$i++;
$result = $this->mysqli->store_result();
if ($i == 2)
$lot_id = $result->insert_id;
}
chee
я не понял

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Kusss
Из второго запроса мне нужно получить значение автоинкремента.
walerus
Kusss
"insert_id" - вернет в любом случае "первый" последний вставленный ID, т.е. допустим
AI начинается с 5
$sql = "INSERT INTO `table1` SET number = 1; ";
$sql .= "INSERT INTO `table2` SET number = 1, lot = 1 ";
$this->mysqli->multi_query($sql);
"insert_id" - вернет 5, хоть и два мультизапроса, может проще прибавлять к "insert_id", количество запросов, если оно конечно известно, либо разбивать на запросы...

Еще такое нарыл в нете:
<?php
$db->multi_query('
INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,1);
SELECT LAST_INSERT_ID();
INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,2);
SELECT LAST_INSERT_ID();
INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,3);
SELECT LAST_INSERT_ID()'
) or trigger_error($db->error);
do {
if ($result = $db->store_result()) {
while ($row = $result->fetch_row()) {
var_dump($row);
}
}
}
while ($db->next_result());
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.