Tosh Tosh - 1 month ago 6
MySQL Question

Retrieve id of each INSERT statement in multi query

Is it possible to retrieve id (ua_id is in my case) for each INSERT statement in following SQL request

INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,1);
INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,2);
INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,3);


using
mysqli::multi_query()
to execute it wheres ua_id is AUTO_INCREMENT primary key?

Answer

Well. you do a multiquery, let's use it:

<?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());