2

是否可以在以下 SQL 请求中为每个 INSERT 语句检索 id(在我的情况下是 ua_id)

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

用于mysqli::multi_query()执行它 ua_id 是 AUTO_INCREMENT 主键吗?

4

5 回答 5

3

在 MySQL 中,您可以使用LAST_INSERT_ID()函数。您每次都需要使用此函数 - 在 INSERT 语句之后。它获取最后插入的记录的 ID。

MySQL 文档 - LAST_INSERT_ID()

于 2012-12-12T20:49:36.747 回答
1

好。你做一个多重查询,让我们使用它:

<?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());
于 2012-12-12T21:31:01.577 回答
0

你的意思是lastInsertId吗?

http://cl1.php.net/manual/en/mysqli.insert-id.php

希望能帮助到你!

于 2012-12-12T20:45:26.787 回答
0

如果您在同一个表中插入,mysqli->insert_id 将返回插入的第一行的 ID,然后您知道插入的下一行是第一行 insert_id + 1 ...

如果您一次使用多个表,则需要回滚结果,然后您需要使用以下命令创建另一个查询:

SELECT MAX(id) FROM table-a WHERE 1
...
SELECT MAX(id) FROM table-n WHERE 1

现在我不知道什么更好(单插入查询或多查询)...

于 2012-12-12T20:49:21.917 回答
0

是的。使用$mysqli->insert_id- 请参阅下面的工作示例。

$mysqli = new mysqli(host, user, pass, db);

$query  = "INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,1); ";
$query .= "INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,2); ";
$query .= "INSERT INTO users_addresses (ua_user_id, ua_address_id) VALUES (1,3); ";

if ($mysqli->multi_query($query)) {
    do {
        /* Returns the auto generated id used in the last query */
        printf("%d\n", $mysqli->insert_id);
        /* Check if loop should continue */
        if ($mysqli->more_results() === FALSE) break;
    } while ($mysqli->next_result());
}

使用内置 mysqli::$insert_id - 文档:http ://php.net/manual/en/mysqli.insert-id.php

于 2016-10-09T16:15:36.990 回答