我有 mysql 问题,mysqli_insert_id()
从整个服务器或从插入该 ID 的特定用户返回记录?因为如果它从整体返回那么使用这个函数将不安全
最佳答案
上面@daan 的评论是完全错误的。 insert_id()
返回放入执行 insert_id() 查询的连接执行的最后一个 insert
查询的 auto_increment 字段中的 ID。
它不会返回表中最大的 ID,它不会返回由某些其他连接创建的 ID,它不会返回由某些其他用户创建的 ID。
它实际上是执行LAST插入YOU创建的最后一个IDYOU。
这意味着执行插入、通过 last_insert_id()
获取创建的 ID,然后在其他查询中使用该 ID 来创建父/子记录是 100% 可靠的。
但请注意,insert_id()
仅返回一个 id 值。如果执行多值插入,您仍然只能从最后一个值集中获取 ID,例如
INSERT INTO sometable (x, y) VALUES (1,2), (2,3)
仍然在内部执行两次插入,并且您只能获得 2,3
元组的 ID,而不是 1,2
。
同样,之前的所有查询都没有内存:
INSERT ... // query #1
INSERT ... // query #2
SET id = last_insert_id();
只会获取查询 #2 创建的 ID,而查询 #1 中的 ID 已“丢失”。
关于php - mysqli_insert_id() 是从整个服务器还是从同一用户获取记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118829/