- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的问题,我想知道我在 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/
这个问题在这里已经有了答案: mysqli_insert_id: What if someone inserts another row just before I call this? (2 个答
我试图从 INSERT/UPDATE 查询中获取最后一个自动增量 ID,我正在尝试这种方式,但它不起作用,它每次都回显 id=0。 PHP require_once('conn.php'); $tem
使用the PHP manual我创建了以下代码: $query = "INSERT INTO inserir(nome) VALUES ('Stefanato');"; $listar = new
我有 mysql 问题,mysqli_insert_id() 从整个服务器或从插入该 ID 的特定用户返回记录?因为如果它从整体返回那么使用这个函数将不安全 最佳答案 上面@daan 的评论是完全错误
我正在使用 mysqli_insert_id() 获取表上的最后一个自动递增 ID,但它始终返回“0”。 $sql = "INSERT INTO inventory (SELECT * FROM tm
我正在构建一个登录系统,它使用 mysql 数据库 (PHP) 中的三个表,分别称为用户、 session 和登录。所有表都有一个自增索引。成功登录后,用户行通过存储在新登录行中的值链接到 sessi
我尝试在多个查询中使用 mysqli_insert_id,但我一直收到 无法添加或更新子行:外键约束失败。下面是我的代码: $con=mysqli_connect("Stuff");
在将产品添加到数据库方面需要一些帮助。 “mysqli_insert_id”行报告错误 这是我的代码: // Add this product into the database now $s
我有以下表格: thread: id, title, content, created thread_tags: tag_id, thread_id tag: id, name author_thre
在你问之前,我已经使用了堆栈溢出和谷歌的搜索功能! 在我的代码中,mysqli_insert_id始终返回0。 在我的“模型” -PHP-Class中,保存函数如下所示: $result = DB::
我正在尝试将最后一个 id 添加到数据库中的另一个字段,但我不知道该怎么做?这是我的代码: 这是我的类(class)连接 class Connect{ public static function
无法使 mysqli_insert_id 工作..ID 为 AUTO_INCRMENT,但仍然不起作用。 $query = "INSERT INTO categoriasdivisiones (tit
我必须使用对另一个表(FK)中的记录的引用。另一个表中的记录可能存在,也可能不存在,因此我可以使用它的 ID,也可以插入一个新记录,然后使用它的 ID。 我有以下代码: $con=mysqli_con
错误显示在这一行: $query1="UPDATE `users` SET password=''.md5(md5(mysqli_insert_id($link).$pass)).'
我有一个函数没有按照我的预期运行。它的目的是为选择查询返回一个行数组,或者为插入查询返回插入 id。由于某种原因,如果插入查询后跟选择查询,则测试查询是否为插入的函数部分会失败,因为 inesrt_i
在高流量应用程序中,mysqli_insert_id() 是否可能返回错误的 ID,或者混淆几乎同时执行的两个 INSERT 查询之间的 ID? 最佳答案 没有。 mysqli_insert_id 从
几个小时以来,我一直在尝试使这项工作正常进行,但似乎一无所获。我正在使用的代码如下。我正在处理一个 phpbb 页面,它解释了模板和 sql 查询设置。 $sql_query = 'INSERT IN
我有以下代码。应该返回表的最后一行的 mysqli_insert_id()(在本例中为“$last_row”)始终返回 0。为什么会这样? query($query); printf ("New Re
我有一个 mysql 表,它附加了一个触发器,可以将该表中的更改记录到第二个表中 CREATE TRIGGER log_table BEFORE UPDATE ON table1 FOR EACH
我不明白为什么 mysqli_insert_id() 返回的 id 与我预期的 id 不同。这是我的代码: $query = "INSERT INTO payments_table (payment_
我是一名优秀的程序员,十分优秀!