我目前正在工作的网站,是一个php / mysql简单论坛,用于学习编程。 所以,我有2个mysql表(其中一个插入主要帖子,另一个插入回复)。 结构是这样的:
user1 date_posted MESSAGE1 -reply_button1 -
user2 date_posted 消息2 -reply_button2 -
user3 date_posted MESSAGE3 -reply_button3 -
user4 date_posted 消息4 -reply_button4- 等...
主页形式通知用户可以发布其他主要评论。
OBS当我说“主要评论”时,我指的是像1和2这样的帖子。其余的是对这些主要评论的回复。
问题在于,当我想将所有回复置于主要评论之下时(如fe,回复3和4应出现在主评论2下),我不知道如何检索所有这些回复并显示它们正确。我有一些逻辑用于显示,但唯一的问题是它只检索其中一些,但不是全部(fe,它抓取并只显示第一个回复(id为3)而不是第二个回复(带有4)的身份。
我在google上搜索了一个想法,但没找到。
这是我检索回复的代码:http://phprun.org/code/RKVMSYT-By-Guest
我的桌子:http://www.2shared.com/photo/-6kjm1vs/tables.html(你可以看到这张图片而不下载它) 可以看出,两个表中的两个id都不是auto_increment字段。所以来自forum_replies的reply_id引用了来自forum_comments的一个id,如果该回复是对主要评论的回复。
关于如何处理这个问题的任何想法?
答案 0 :(得分:0)
您未在select中使用where子句。 相反,你似乎拉了整个表,然后迭代寻找响应。
尝试使用:
$stmt2 = $db->prepare("SELECT * FROM forum_replies WHERE reply_id =?");
$stmt2->execute(array($id));
这将为您提供更快的回报,并且您不必遍历每条记录,看看是否需要它。
当我遍历行集时,这是我的方法......
foreach($stmt2 as $row) {
echo "this is id ".$row['id'];
}