我习惯于使用用户帐户构建网站,因此我可以简单地自动增加用户 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/