如何从mysql中获取最近插入的自动增量id

时间:2015-03-03 17:13:41

标签: php mysql

我有一个名为war_engagement的MySQL表,它有一个自动增量ID(名为w_e_id)作为主键。 我正在插入像这样的记录

//insertion in first table
$query = "INSERT INTO war_engagement (
                `attacker_user_id` ,
                `attacker_city_id` ,
                `attacker_mode` ,
                `result`
                )
                VALUES (
                '$_SESSION[user_id]',
                '$cur_city_id',
                'default',
                ''
                )";
$rs = mysql_query($query) or die(mysql_error()." in query $query");

如果上面的查询执行成功,那么我想将这个最近插入的自动增量ID(即w_e_id)作为外键插入另一个名为war_engagement_troops

的表中
//if first record inserted successfully then insert second table
if($rs)
{
    echo "'".$sending_troop."' ,";
        $query = "INSERT INTO war_engagement_troops (
                    `w_e_id` ,
                    `quantity` ,
                    `expired`
                    )
                    VALUES (
                    '$recently_inserted_w_e_id',
                    '$quantity',
                    '$expired'
                    )";
    $rs = mysql_query($query) or die(mysql_error()." in query $query");
    if(!$rs) echo $rs;
}

我希望w_e_id(自动增量)将其分配给$recently_inserted_w_e_id

(我还使用MAX(w_e_id)来检索最大ID,但它看起来并不理想,并且可以在多个用户插入中混淆)。

请给我一些理想的解决方案来获取最近插入的ID /记录。

6 个答案:

答案 0 :(得分:2)

您可以使用mysql_insert_id()函数获取最后插入的ID,然后您可以将其用作另一个表的foregin键

答案 1 :(得分:1)

您正在寻找mysql_insert_id()函数。但我强烈建议您使用PDO

答案 2 :(得分:1)

如果您不想使用MAX(w_e_id),那么在INSERT语句之后您可以使用

SELECT LAST_INSERT_ID();

我们可以利用mysql_insert_id();功能也是如此

它看起来像这样

$query = "INSERT INTO war_engagement ( `w_e_id` , ...)  VALUES ( ...);
//if first record inserted successfully then insert second table
if($rs)
{
    $query = "INSERT INTO war_engagement_troops ( `id` ,  `w_e_id` , ...)  VALUES (  '', LAST_INSERT_ID(), ....)";
                   }

答案 3 :(得分:1)

如果使用面向对象的样式,可以使用mysqli_insert_id()函数或mysqli :: $ insert_id属性

http://php.net/manual/en/mysqli.insert-id.php

如果使用PDO,请使用方法PDO :: lastInsertId()

http://php.net/manual/en/pdo.lastinsertid.php

答案 4 :(得分:1)

$recently_inserted_w_e_id = mysql_insert_id();

答案 5 :(得分:-1)

SELECT TOP 1 w_e_id 来自war_engagement 按顺序排序w_e_id desc