php - mysqli_insert_id() 是从整个服务器还是从同一用户获取记录?

标签 php mysqli

我有 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/

相关文章:

javascript - 为什么我无法从 jQuery (PHP) 接收数据?

php - 新的英国 cookie 法是否接受 PHP session ?

php - 将表中的数据从数据库传递到模态

php - 获取当前连接的 mysqli 数据库名称

php - MySQL FIND_IN_SET OR IN 仅适用于第一个整数?

php - apc_add 和 apc_store 之间的区别?

php - 在 PHP 中循环遍历这个数组的最佳方法是什么?

php - 如何在symfony save方法中获取原始值?

PHP PDO - mysqli_num_rows 的替代方案

php - mysqli 绑定(bind)参数数据类型