MYsql-Get-insert-id-sql

MYsql-Get-insert-id-sql,mysql,sql,Mysql,Sql,我想执行一个查询,将insert id插入其中一个列 我想知道如何获取插入id 我读了这个答案 但是它讨论了如何在查询之后获取insert id,我希望在执行查询时获取它 我试着做: $stmt = $db->prepare("INSERT INTO `files` (`name`, `fname`) VALUES (?, LAST_INSERT_ID() + ?)") or die($db->error); $stmt->bind_param('ss', $n

我想执行一个查询,将insert id插入其中一个列

我想知道如何获取插入id 我读了这个答案 但是它讨论了如何在查询之后获取insert id,我希望在执行查询时获取它

我试着做:

    $stmt = $db->prepare("INSERT INTO `files` (`name`, `fname`) VALUES (?, LAST_INSERT_ID() + ?)") or die($db->error);
    $stmt->bind_param('ss', $name, $uniqid);

但是它的剂量工作,我总是得到56,还有持续剂量工作,我需要做什么?

插入后保存它更简单、更好。在实际插入之前,您也不太可能获得正确的id

最可靠的方法是使用事务

  • 启动交易
  • 插入行
  • 更新插入id
  • 提交事务

    • 在MySQL中,
      +
      不是字符串连接运算符。使用
      CONCAT(string1、string2等)

      在wire协议中,mysql在每次查询后都会主动向客户端返回与上次插入ID()相同的值,大多数库都提供了访问最近返回值的方法。您没有提到,但看起来您正在php中使用mysqli,因此您正在寻找以下内容:

      $last_id = $db->insert_id;
      
      这看起来好像是要发送第二个查询,向数据库询问id,但事实并非如此。它将返回以前存储的值


      为什么在一个查询中完成它如此重要?可以运行两个查询。我想不出有什么好的理由让你这么做