【问题标题】:How insert 2 related records in mysql如何在mysql中插入2条相关记录
【发布时间】: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_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really pretty easy
  • 是的,它们有效。 mysql_insert_id() 将为您提供您刚刚创建的记录的id,无论是否有 1000 人大致同时在同一个表中创建了一行。我粗略地说,真正的数据库当然是它为你处理并发访问,不像Access等较小的数据库

标签: php mysql sql sql-insert


【解决方案1】:

除了 mysql 函数在 PHP 7 中已被弃用和删除之外,mysql_insert_id 可以正常工作,因为该函数使用您的连接返回最后生成的 id。如果其他人创建了另一条记录,那么您将使用您的连接获得最后生成的 id,而不是最后插入到该表中的 id。

尝试使用 PDO 或 MySQLi。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多