php - 如何在保证没有重复 ID 的情况下更新多个表?

标签 php mysql

我习惯于使用用户帐户构建网站,因此我可以简单地自动增加用户 ID,然后让他们登录,同时我在内部通过用户 ID 识别该用户。在这种情况下我需要做的有点不同。我需要匿名从人们那里收集几行数据,并将这些行联系在一起,以便我可以轻松辨别哪些数据行属于哪个用户。

我遇到的困难是生成 id 以将数据行绑定(bind)在一起。我的第一个想法是轮询数据库以获取现有的最高用户 ID,并以用户 ID +1 写入数据库。然而,如果两个提交在其中任何一个写入之前轮询数据库,这将失败——它们将共享相同的用户 ID。

我的另一个想法是创建一个单独的用户 ID 表,该表将设置为自动递增,并简单地生成一个新行,然后轮询该表以获取创建的最后一行的 ID。由于与上述相同的原因,这也失败了 - 如果两个提交在它们中的任何一个轮询最新用户 ID 之前创建了一行,那么它们最终将共享一个 ID。

有什么想法吗?我觉得我遗漏了一些明显的东西。

最佳答案

我想我没看错;我遇到了类似的问题。不过,有一个非常方便的 php 函数。在查询数据库以插入新行并自动递增其用户 ID 后,请执行以下操作:

$user_id = mysql_insert_id();

这只是返回当前 mysql 连接上先前查询的自动增量值。您可以阅读更多相关信息 here如果需要的话。

然后您可以使用它来填充第二个表的数据,确保没有人会从第一个表中获得重复的 ID。

关于php - 如何在保证没有重复 ID 的情况下更新多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361995/

相关文章:

php - Imagick:使用 mask 组合

php - 在sql中选择多个对象并查看是否至少有1个具有不同的值?

php - 在 Drupal 中使用 "global"用户是否危险?

php函数获取两个可选参数并写在类中

mysql - 在 PHP/MySQL 中按天对记录进行分组

mysql - 在 mysql workbench 6.2 中使用声明@语法错误意外

php - 没有mysql的php中唯一的ip访问重定向

php - Wordpress 页面模板 php 未按预期输出

mysql - 我无法将 grafana 与在同一 ubuntu 服务器虚拟机中运行的 mysql 数据库连接

mysql - 在laravel中编写连接同一个表的代码