【发布时间】:2016-02-09 16:53:19
【问题描述】:
我想在 mysql 的 2 个不同表中存储 2 个相关记录
我有这些信息
名称、选项 1、选项 2
名称及其 ID 存储在用户表中,选项存储在选项表中
此表中的 uid 是自动递增的
用户表
uid --- name
1 --- Jack
2 --- Sara
选项表
user_uid --- option
1 --- aaa
1 --- bbb
2 --- ccc
2 --- ddd
问题是如何在用户表中找到下一个 uid 以使用该外键保存我的选项,有几种方法可以获取下一个生成的 id,例如
LAST_INSERT_ID()
或
mysql_insert_id()
或
$result = mysql_query("SHOW TABLE STATUS LIKE 'table_name'");
$row = mysql_fetch_array($result);
$nextId = $row['Auto_increment'];
但是如果多个请求同时到达服务器,这些方法是否有效?
如果在我获得最后一个 id 后,另一条记录保存到 db 并更改最后一个 id
有没有办法保留下一个自动增量 ID 并获得它?
【问题讨论】:
-
请stop using
mysql_*functions。 These extensions 已在 PHP 7 中删除。了解PDO 和 MySQLi 的 prepared 语句并考虑使用 PDO,it's really pretty easy。 -
是的,它们有效。
mysql_insert_id()将为您提供您刚刚创建的记录的id,无论是否有 1000 人大致同时在同一个表中创建了一行。我粗略地说,真正的数据库当然是它为你处理并发访问,不像Access等较小的数据库
标签: php mysql sql sql-insert