我有一个名为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 /记录。
答案 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()
答案 4 :(得分:1)
$recently_inserted_w_e_id = mysql_insert_id();
答案 5 :(得分:-1)
SELECT TOP 1 w_e_id 来自war_engagement 按顺序排序w_e_id desc