使用PHP在mysql中插入数据时返回最后一个id

Posted

技术标签:

【中文标题】使用PHP在mysql中插入数据时返回最后一个id【英文标题】:return the last id when insert the data in mysql using PHP 【发布时间】:2014-01-13 04:45:48 【问题描述】:

我尝试在将数据插入 mysql 后获取最后一个 id。我已经尝试使用 mysql_insert_id() 但它似乎不起作用。

以下是 PHP 代码:

 function addPhoneContact($customername ,$address ,$email ,$comment,$remarks)

        $connection = MySQLConnection();
        $conf = new BBSupervisorConf();
        $log = new KLogger($conf->get_BBLogPath().$conf->get_BBDateLogFormat(),  $conf->get_BBLogPriority() );

        $query="INSERT INTO bb_customer 
                (customername,address ,email ,comment,remarks) 
                VALUES
               ('".$customername."','".$address."','".$email."','".$comment."','".$remarks."');";


            $customerid = mysql_insert_id();
        try 
        $log->LogDebug("Query[".$query."]");
        if (!mysql_query($query))
            die (mysql_error());      
        else
    
      catch(Exception $e)
          $log->LogError($e->getMessage());
      

        closeDB($connection);
        return $customerid;
    

感谢您的帮助。

【问题讨论】:

您的 $query 执行是否正确?还有为什么您的 $query 中有一个额外的分号? 【参考方案1】:

放这条线

$customerid = mysql_insert_id();

在你执行查询之后

mysql_query($query)

如果不执行mysql查询,它不会知道id。

强烈考虑不要使用 mysql_* 函数。

Why shouldn't I use mysql_* functions in php?

【讨论】:

-1 用于支持使用已弃用的mysql_ 函数而不建议使用mysqliPDO @Nikola 我很欣赏你的想法。您也可以编辑答案。是什么阻止你这样做? @chanchal118,没有什么能阻止我,但我不明白为什么我要写这个信息,当它是你的答案时。我投了反对票,因为我相信这个问题没有以最好的方式回答(实际上比中性更糟糕),因此给你一个评论,你可以如何改进它。如果你这样做,我可以很容易地改变我的投票。我相信投票否决是正确的,因为不应再使用 mysql_ 函数,即使 mysql_insert_id() 会完成这项工作,您也应该提出更好的方法 [替代] 在 SO 我们不参加考试。这是一个社区。我们应该始终以最好的方式改进问题或答案。询问Why you have not done that? 不是最好的方法。 @chanchal118 提出这样的问题正是 cmets 的用途,编辑不应改变答案的预期含义。【参考方案2】:
 function addPhoneContact($customername ,$address ,$email ,$comment,$remarks)

    $connection = MySQLConnection();
    $conf = new BBSupervisorConf();
    $log = new KLogger($conf->get_BBLogPath().$conf->get_BBDateLogFormat(),  $conf->get_BBLogPriority() );

    $query="INSERT INTO bb_customer 
            (customername,address ,email ,comment,remarks) 
            VALUES
           ('".$customername."','".$address."','".$email."','".$comment."','".$remarks."');";


        $customerid = mysql_insert_id(); //comment this out
    try 
    $log->LogDebug("Query[".$query."]");
    if (!mysql_query($query))
        die (mysql_error());      
    else

  catch(Exception $e)
      $log->LogError($e->getMessage());
  
    $customerid = mysql_insert_id(); //add here
    closeDB($connection);
    return $customerid;

【讨论】:

以上是关于使用PHP在mysql中插入数据时返回最后一个id的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中获取 MySQL 表的最后插入 ID?

返回 mysql 最后插入 id 作为链接变量

为啥我无法在 PHP 和 MySQL 中获取最后一个插入 ID?

在 PDO(使用 MySQL)中执行 INSERT 后获取最后插入的行?

使用 PDO for MySQL 时存储自动递增的 ID

如何在使用 PHP-PDO 记录查询时获取最后一个插入 ID