Php 用外键连接两个记录集

Php 用外键连接两个记录集,php,mysql,Php,Mysql,我有一个小型社交网站,允许用户对帖子发表评论。我可以根据用户使用SQL添加的好友显示记录。然而,我希望每个帖子上的评论都直接显示在帖子下方 邮政表格: all_id(PK), name, comment, time, expand 意见表: post_id, name, comment, all_id(FK) 我正试图复制Facebook的功能:评论一篇文章,然后在下面看到文章。我尝试过使用复杂的SQL连接,但它没有显示任何数据。虽然您可以在一个查询中获取帖子和所有评论,但结果集可能会非常大

我有一个小型社交网站,允许用户对帖子发表评论。我可以根据用户使用SQL添加的好友显示记录。然而,我希望每个帖子上的评论都直接显示在帖子下方

邮政表格:

all_id(PK), name, comment, time, expand
意见表:

post_id, name, comment, all_id(FK)

我正试图复制Facebook的功能:评论一篇文章,然后在下面看到文章。我尝试过使用复杂的SQL连接,但它没有显示任何数据。

虽然您可以在一个查询中获取帖子和所有评论,但结果集可能会非常大,在这种情况下,您可能会耗尽数据库、脚本或服务器的内存。但是如果你想这样做,请让我知道,我可以发布一个例子

或者,您可以使用两个单独的查询。第一个将获取该帖子,第二个将获取与该帖子相关的所有评论。下面是一个使用PHP和mySQL的示例:

// Connect to MySQL Database
$db = mysql_connect('my_host', 'my_username', 'my_password');
mysql_select_database('my_database', $db);
// Query for Posts from a specific user.
$grabPost = mysq_query("SELECT all_id, name, comment, time, expand FROM posts WHERE name = 'some_user_name'", $db);
// Iterate over each post
while($post = mysql_fetch_assoc($grabPost)) {
    print '<b>' . htmlentities($post['name']) . '</b> - <i>' . $post['time'] . '</i><br />';
    print htmlentities($post['comment']);
    print '<br />';
    // Query for Comments relating to this Post
    $grabComments = mysql_query("SELECT post_id, name, comment FROM comments WHERE all_id = " . $post['all_id'], $db);
    // Iterate over each comment
    while($comment = mysql_fetch_assoc($grabComments)) {
        print '<p><b>' . htmlentities($comment['name']) . '</b> Says: ' . htmlentities($comment['comment']) . '</p>';
    }
    print '<hr />';
}
//连接到MySQL数据库
$db=mysql_connect('my_host'、'my_username'、'my_password');
mysql_选择_数据库('my_数据库',$db);
//查询来自特定用户的帖子。
$grabbost=mysq_query(“选择所有_id、名称、注释、时间,从name='some_user_name'”的帖子展开,$db);
//迭代每一篇文章
而($post=mysql\u fetch\u assoc($grabbost)){
打印'.htmlentities($post['name'])。-'.$post['time'].
; 打印文本($post['comment']); 打印“
”; //查询与此帖子相关的评论 $grabComments=mysql_query(“选择post_id,name,comment FROM comments WHERE all_id=“.$post['all_id'],$db”); //迭代每个注释 while($comment=mysql\u fetch\u assoc($grabbcomments)){ 打印“”.htmlentities($comment['name'])。”表示:“.htmlenties($comment['comment'])。

”; } 打印“
”; }
请少说闲话,多讲事实,多举例子。并使用编辑器中的
代码块
功能。您尝试使用的JOIN命令是什么?您使用的是哪种数据库服务器?PostgreSQL?MySQL?微软MSSQL服务器?SQLLite?还有,你用什么语言编程?pythonPHP?JAVARuby?@JoshuaBurns——从标签来看,我想说PHP和MySQL谢谢你replies@JoshuaBurns…我使用php MySQL上面的解决方案解决了您的问题,还是您有兴趣在帖子中获取所有评论?请记住,这可能会炸毁您的数据库、web服务器或PHP脚本!谢谢你的回复…我会试试你给我的那个…很快会回复…嘿,谢谢…我使用dreamweaver cs5…它说第8行有语法错误..也就是说while从哪里开始我不认为在一个查询中抓取帖子和评论有问题-事实上,我几乎在任何情况下都建议这样做。你只需要限制你一次抓取的评论数量(比如,最近的10条)。也就是说,请仔细阅读
左外部联接的工作原理。这就是你可能想要用来抓取一篇文章及其所有评论(即使没有评论)。