如何在表上获取最后一个插入的id以在另一个表上的另一个插入上使用它?

时间:2013-04-12 03:55:21

标签: php mysql insert

我试图在名为authors的表上获取最后插入的id的id,以便在另一个名为mail的表中使用它。

如您所见,这是在表authors中插入新作者,并且在插入后,它必须在表mail中向新作者插入欢迎消息。

我正在使用mysql_insert_id(),但它不起作用。 没有任何内容保存到数据库,也不会发生错误。

我知道我不应该使用mysql_query但是没关系,这不是重点,请忽略这一点。

if(!isset($row[email])){

    $sql = "INSERT INTO authors VALUES (NULL, 0, '".$email."', '".$username."', NULL, '".$first."', '".$fullname."', '".$first."', NULL, NULL, NULL, NULL,'http://www.gravatar.com/avatar/".md5(strtolower(trim($email)))."', 0);";
    mysql_query($sql);

    $sqlmsg = "INSERT INTO mail VALUES (NULL, 1, mysql_insert_id(), 'Welcome', Hello! Welcome to the website!', 'unread', NOW, 0, 0)";
    mysql_query($sqlmsg);

}   

为什么插入新作者时没有任何反应?

谢谢。

3 个答案:

答案 0 :(得分:1)

您需要在字符串中连接它,

$sqlmsg = "INSERT INTO mail VALUES (NULL, 1, " . mysql_insert_id() . ", 'Welcome', Hello! Welcome to the website!', 'unread', NOW, 0, 0)";

答案 1 :(得分:1)

尝试将其保存在临时变量上,然后在下一个查询中使用它。

<?php
if(!isset($row[email])){

  $sql = "INSERT INTO authors VALUES (NULL, 0, '".$email."', '".$username."', NULL, '".$first."', '".$fullname."', '".$first."', NULL, NULL, NULL, NULL,'http://www.gravatar.com/avatar/".md5(strtolower(trim($email)))."', 0);";
  mysql_query($sql);

  $author_id = mysql_insert_id();

  $sqlmsg = "INSERT INTO mail VALUES (NULL, 1, $author_id, 'Welcome', Hello! Welcome to the website!', 'unread', NOW, 0, 0)";
  mysql_query($sqlmsg);

}   
?>

答案 2 :(得分:0)

在表格上使用选择查询,并按'id'desc以限制1

排序
select `id` from `authors` order by `id desc limit 1
如果它自动递增,

将返回最后一个id。