我在 php 和 mysql 中使用 LAST_INSERT_ID() 但我无法得到结果。为啥?

Posted

技术标签:

【中文标题】我在 php 和 mysql 中使用 LAST_INSERT_ID() 但我无法得到结果。为啥?【英文标题】:I'm using LAST_INSERT_ID() in php and mysql but i can't get a result. Why?我在 php 和 mysql 中使用 LAST_INSERT_ID() 但我无法得到结果。为什么? 【发布时间】:2013-05-25 15:36:52 【问题描述】:
$sql_comp5 ="INSERT INTO `tiquets` (`Id_Tiquet`) VALUES (NULL); SELECT LAST_INSERT_ID()";   
    $result8 = mysql_query($sql_comp5); 

     $flag_control=0;
    while ($row = mysql_fetch_assoc($result8, MYSQL_BOTH)) 
    
        $flag_control=$flag_control+1;
             $id_t[$flag_control]=$row['LAST_INSERT_ID()'];              
    


    for ($buc = 1; $buc <=$flag_control; $buc++)
    
           $id_tiquet=$id_t[$buc];                
    

我做对了吗?还是我错了?

非常感谢!!

【问题讨论】:

Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial. 【参考方案1】:

您不能使用mysql_* 函数执行两个查询。为此,您需要mysqli::multi_query()。要使用 mysql_* 获取最后一个插入 ID,请使用 mysql_insert_id()

$sql_comp5 ="INSERT INTO `tiquets` (`Id_Tiquet`) VALUES (NULL);";
$result8 = mysql_query($sql_comp5); 
$id      = mysql_insert_id($result8);

【讨论】:

【参考方案2】:

删除第二个查询 - 并使用 php 的 mysql_insert_id()

$sql_comp5 ="INSERT INTO tiquets (Id_Tiquet) 值 (NULL)"; $result8 = mysql_query($sql_comp5); $insertedId = mysql_insert_id();

【讨论】:

以上是关于我在 php 和 mysql 中使用 LAST_INSERT_ID() 但我无法得到结果。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

检索 LAST_INSERT_ID() 时 getUInt64 的参数无效

处理 PHP 和 MySQL 中的“布尔”值

Mysql 用 php 慢

使用 Ajax 和 PHP 插入数据库(mysql)

通过逐行从数据库中获取数据,使用 PHP/MySQL 生成 QR 码

需要使用 PHP 将 android app 生成的纬度和经度值存储到 mySQL 数据库中