mysqli_insert_id()特定于数据库连接 - 它返回此脚本调用最近插入的行的ID,而不是任何其他MySQL客户端。因此,如果多个应用程序同时插入数据库,则不会发生冲突。
我很困惑2件事情首先是
特定于数据库连接
和第二件事
MySQL客户端
请有人能够探讨mysql连接如何为不同的客户端工作或这些客户端在任何应用程序中的行为方式。我很抱歉,如果这是一个荒谬的问题,但我很困惑,为什么它不会同时反映在数据输入中。
答案 0 :(得分:0)
特定于数据库连接
假设我运行一个插入行的PHP脚本,然后调用mysqli_insert_id(),它告诉我它生成的值为1234.
接下来,您还运行一个单独的PHP脚本,将一行插入同一个表中。我们假设它产生了值1235。
然后我的PHP脚本仍然在以前的请求中运行,再次调用mysqli_insert_id()。它报告1235吗?不 - 它仍然报告1234,因为它只会告诉我在会话期间生成的最新ID 。
如果我的PHP请求完成,然后我发出另一个PHP请求,并且它连接到MySQL,则将其视为新连接。默认情况下,Mysqli_insert_id()不会报告任何内容,除非我执行新插入。
MySQL客户端
在此上下文中,mysql客户端是例如在一次请求期间与MySQL建立连接的PHP脚本。
MySQL客户端也可以是命令行mysql工具,或MySQL Workbench之类的GUI界面,或者用PHP或其他语言编写的其他应用程序。术语" MySQL客户端"意在包括所有这些。每个客户端都与MySQL数据库服务器建立连接,每个连接都有自己对最后一个插入ID的概念。