将值插入两个相关表中

时间:2011-01-26 17:59:11

标签: php sql mysql primary-key

我试着给出一个关于我真实问题的神学。我有两个表格用于文章,一个用于评论。每个都有自己的主键。但每篇文章都可以有几条评论。

所以这里是用于将文章插入数据库的SQL(PHP in PHP)代码:

$sql="INSERT INTO articles (content)
      VALUES
      ('$content')";//$content variable has text related to the article

文章表有两列articleId和content。当我插入内容时,每个插入的文章会自动获得一个独特的articleId。 articleId是文章表的主键。有没有一种简单的方法可以有效地获得该文章的数量?有效的方式我的意思是:尽量避免使用更多的SQL代码。因为在下一步中我需要使用articleId将每条评论与本文联系起来。

$sql="INSERT INTO comments (comment, articleId)
      VALUES
      ('$comment', '$articleId')";//commentId is the primary key, but it's auto inserted

4 个答案:

答案 0 :(得分:3)

为什么不这样:

$query = "INSERT INTO articles ..."
mysql_query($query);
$new_id = mysql_insert_id();

foreach($comments as $comment) {
   $query = "INSERT INTO comments (articleID, comment) VALUES ($new_id, $comment);"
   mysql_query($query);
}

答案 1 :(得分:0)

尝试实现触发器,因此当文章获得插入时,您可以插入注释。

答案 2 :(得分:0)

触发器似乎是要走的路 - 但是,不要过于兴奋,因为逻辑和触发器本身是隐藏使用的。

始终记录您创建的触发器的某处,以防万一您忘记了它。

答案 3 :(得分:0)

在第二个查询中,您可以引用最后一个插入ID - 您可以使用MySQL函数或PHP函数来执行此操作。

MySQL的:

INSERT INTO comments (comment, articleId)
      VALUES
      ('comment', LAST_INSERT_ID())

PHP:

$sql="INSERT INTO comments (comment, articleId) "
      . "VALUES "
      . "('$comment', mysql_insert_id())";

编辑:如果在创建articleid后插入多个注释,则需要在插入后立即存储articleid(在PHP中),然后在将来使用该变量,如下所示:

$sql="INSERT INTO articles (content)
      VALUES
      ('$content')"
$articleid = mysql_insert_id();

$sql="INSERT INTO comments (comment, articleId) "
      . "VALUES "
      . "('$comment', $articleid)";
$sql="INSERT INTO comments (comment, articleId) "
      . "VALUES "
      . "('$comment', $articleid)";