2013-05-26 23:28
浏览 33

PHP MySQL - 如何在没有第二个查询的情况下获取最后一个Insert语句的结果的id?

How do I obtain the id of the result of the last Insert statement without a second query?

I am aware I could select the last row of the database to get what I'm looking for... sometimes. The issue is if two users are inserting at the same time I'm worried that they may get the wrong results.

Pseudo Example Code:

User 1 - Insert Record A
User 1 - Select last Record
User 1 - Record A Selected

Pseudo Multi-user Problem:

User 1 - Insert Record A
User 2 - Insert Record B
User 1 - Select last Record
**User 1 - Record B Selected**
User 2 - Select last Record
User 2 - Record B Selected

图片转代码服务由CSDN问答提供 功能建议

如何在没有第二个查询的情况下获取最后一个Insert语句的结果的id? \ n

我知道我可以选择数据库的最后一行来获取我正在寻找的东西......有时候。 问题是如果两个用户同时插入,我担心它们可能会得到错误的结果。


  用户1  - 插入记录A 
用户1  - 选择最后一个记录
用户1  - 记录选择


 用户1  - 插入记录A 
用户2  - 插入记录B 
用户1  - 选择最后一个记录
 **用户1  - 记录B选择** 
用户2  - 选择最后一个记录\  nUser 2  - 记录B选择
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • duanli0453 2013-05-28 12:12

    The problem does not occur, when the users use different connections. That should always be the case on different requests. But even within the same script, utilizing different connections, ensures the separation.


    $connection_for_user1 = new MySQLi('localhost', 'user', 'pass', 'test');
    $connection_for_user2 = new MySQLi('localhost', 'user', 'pass', 'test');
    $result_for_user1 = $connection_for_user1->query("INSERT INTO test_table (data) VALUES ('A')");
    $result_for_user2 = $connection_for_user2->query("INSERT INTO test_table (data) VALUES ('B')");
    $record_id_for_user1 = $connection_for_user1->insert_id;
    $record_id_for_user2 = $connection_for_user2->insert_id;
    echo "User 1: record $record_id_for_user1
    echo "User 2: record $record_id_for_user2


    User 1: record 1
    User 2: record 2
    打赏 评论
  • dounianxie2058 2013-05-26 23:30

    You can use mysql_insert_id() or mysqli_insert_id to fetch the last inserted id

    打赏 评论

相关推荐 更多相似问题