【问题标题】:PHP MySQLi insert ids from multi_query()PHP MySQLi 从 multi_query() 插入 id
【发布时间】:2010-10-11 01:11:48
【问题描述】:

有没有办法在使用mysqli multi_query 函数插入几行后获取最后生成的auto_increment ID?

编辑:

我设法通过添加 SELECT LAST_INSERT_ID();在多查询中的每个 INSERT 查询之后,然后使用 mysqli_use_result 获取所有 id,我认为这是最好的方法。

【问题讨论】:

  • 你试过mysqli_insert_id吗?
  • 只返回最后一个 id 不是全部
  • +1 添加答案

标签: php mysqli


【解决方案1】:

您可以通过为每个连续的插入语句调用 MySQLi 的 next_result() 来获取不同的插入 ID。据我所知,只要查询是插入语句或不返回结果集的其他内容,您就不必存储任何结果。

$sql = new MySQLi("...");
$query = "INSERT STATEMENT NUMBER ONE;";
$query .= "INSERT STATEMENT NUMBER TWO;";
$query .= "INSERT STATEMENT NUMBER THREE";
$sql->multi_query($query);

// The first insert id will be available at once
$id1 = $sql->insert_id;

// The second needs to be handeled a little differently
$sql->next_result();
$id2 = $sql->insert_id;

// And lastly the third one
$sql->next_result();
$id3 = $sql->insert_id;

如果您不确定有多少插入语句,也可以将其放入循环中:

$ids = array();
do
{
    $ids[] = $sql->insert_id;
    $sql->next_result();
} while($sql->more_results());

这是未经测试的伪代码(您可能已经猜到了),但它应该可以工作。

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2018-09-22
    • 1970-01-01
    • 2011-06-20
    • 2018-11-22
    • 1970-01-01
    • 2018-04-13
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多