1

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

正如你所看到的,这是在 table 中插入一个新作者authors,并且在插入之后它必须在 table 中插入一条欢迎消息给新作者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);

}   

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

谢谢你。

4

3 回答 3

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);

}   
?>
于 2013-04-12T04:46:48.933 回答
1

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

$sqlmsg = "INSERT INTO mail VALUES (NULL, 1, " . mysql_insert_id() . ", 'Welcome', Hello! Welcome to the website!', 'unread', NOW, 0, 0)";
于 2013-04-12T03:56:28.903 回答
0

在表上使用选择查询并按 'id' desc 排序,限制为 1

select `id` from `authors` order by `id desc limit 1

如果它是自动递增的,将返回最后一个 id。

于 2013-04-12T04:33:43.377 回答