我试着给出一个关于我真实问题的神学。我有两个表格用于文章,一个用于评论。每个都有自己的主键。但每篇文章都可以有几条评论。
所以这里是用于将文章插入数据库的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
答案 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)";