【问题标题】:Get autoincrement id after an insert query performed with a prepared statement在使用准备好的语句执行插入查询后获取自动增量 ID
【发布时间】:2010-11-29 18:13:30
【问题描述】:

如果我使用带有 php 和 mysqli_* 函数的存储过程执行插入查询,有没有办法检索自动增量 id 字段的值?
mysqli->insert_id 似乎不起作用。

【问题讨论】:

  • 也许你可以发布你的表定义。或者仔细检查是否有 auto_increment 集。

标签: php mysql mysqli prepared-statement auto-increment


【解决方案1】:

mysqli->insert_id(其中mysqli 代表您的数据库连接) 必须在插入后直接使用。如果您在同一连接上运行其他查询 在尝试读取 insert_id 之前,您会返回 0。

【讨论】:

    【解决方案2】:

    您可以在插入后在存储过程中添加此语句:

       SET @saved_id = LAST_INSERT_ID()
    

    然后,调用过程后执行这个查询:

       SELECT @saved_id
    

    【讨论】:

      【解决方案3】:

      您确定您执行的最后一个查询是 INSERT 吗?

      mysqli->insert_id 似乎是正确的答案:

      返回值

      已更新的AUTO_INCREMENT 字段的值 由上一个查询。如果返回零 没有以前的查询 连接或者如果查询没有 更新 AUTO_INCREMENT 值。

      【讨论】:

      • 你是对的,我在我的代码中犯了一个错误,mysqli->insert_id 实际上也适用于准备好的语句。谢谢你..
      【解决方案4】:

      您可以尝试像这样创建query to MySql

      SELECT LAST_INSERT_ID()
      

      不确定它是否适用于存储过程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        相关资源
        最近更新 更多