gpt4 book ai didi

php - 使用 mysqli_insert_id() 有多安全,如果不安全,我应该使用什么?

转载 作者:行者123 更新时间:2023-12-05 03:45:15 24 4
gpt4 key购买 nike

我有一个非常简单的问题,我想知道我在 MySql 数据库中插入的最后一个查询的 ID。

使用 mysqli_insert_id() 是安全高效的,如果不是,我应该使用什么?

最佳答案

是的,这是在使用自动增量时检索由插入生成的 ID 值的推荐方法。但它有局限性,这些局限性已记录在案。您阅读文档了吗?

mysqli_insert_id() 函数返回与内置 SQL 函数相同的值 LAST_INSERT_ID() .

请注意,它仅在您插入并生成 ID 后在同一 session 中起作用。您无法获取上一次 session 中生成的最后一个 ID。

例如,它在 phpMyAdmin 中根本不起作用,因为 PHP 的“无共享”特性是每个查询都在不同的 session 中执行。

它也仅在您的主键是自动递增键时才有效,并且如果您的最后一次插入使用了自动递增机制。即使您的表具有自动增量,您也可以通过指定一个值来覆盖它。那么最后的insert id就没有意义了。示范:

mysql> create table t (id serial primary key);

mysql> insert into t set id = 42;

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 0 |
+------------------+

为什么返回 0?因为我的插入没有生成 ID,它只是使用了我在插入中指定的 ID 值。

它只返回生成的最新 ID。如果您执行另一个生成 ID 的后续插入,它将返回最近生成的 ID。

它不会告诉您哪个表 ID 是由生成的。您可以自行了解最近插入到哪个表,该表使用自增生成 ID。

总而言之,是的,它是正确使用的功能,但您确实需要了解它的工作原理以及如何使用它。

关于php - 使用 mysqli_insert_id() 有多安全,如果不安全,我应该使用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65909221/

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