gpt4 book ai didi

php - 复合查询中的 mysqli_insert_id

转载 作者:行者123 更新时间:2023-11-29 05:10:31 26 4
gpt4 key购买 nike

我正在使用 mysqli_insert_id() 获取表上的最后一个自动递增 ID,但它始终返回“0”。

$sql = "INSERT INTO inventory (SELECT * FROM tmptable)";
$result = mysqli_query($link, $sql);
$newId = mysqli_insert_id($link); //$newID ends up being 0

inventory 表的 id 列设置为自动递增,并且 mysqli_insert_id() 在其他 INSERT< 上工作正常 对未插入 SELECT 语句结果的 inventory 的查询。 SELECT 语句是否由于某种原因优先作为最后一个查询,这会导致 mysqli_insert_id() 返回 0?

最佳答案

您使用的 LAST_INSERT_ID() 不正确。 http://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id这是 mysqli_insert_id() 下的服务器功能.

首先,您的 INSERT 语句没有提及列名列表。这意味着它将信息插入到目标表的所有列中,包括自动递增列。当您在 INSERT 中指定自动递增列的值时,您禁用了自动递增功能,因此您返回零而不是 LAST_INSERT_ID() 中的实际 id 值。

其次,如果你插入多行,你只会得到插入的第一行的id值。

关于php - 复合查询中的 mysqli_insert_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com