我有一个页面,其中显示了我和我的朋友的最新状态更新。
涉及的表是 statusUpdates、users & friends。
我用来提取必要数据的脚本是 -
$myQuery = mysql_query("SELECT * FROM statusUpdates AS su
LEFT JOIN friends AS fr ON fr.frContactID = su.authorID
JOIN (users AS u) ON (u.roll = su.authorID)
WHERE (fr.frHostID = ".$userLoggedIn['roll']." or su.authorID = ".$userLoggedIn['roll'].")
GROUP BY su.statusID ORDER BY su.statusID DESC LIMIT 0,15");
我用这个打印了数据 -
if (mysql_num_rows($myQuery) == 0) echo "No updates to show";
else
{
while ($row = mysql_fetch_assoc($myQuery))
{
// Print $row['statusID'], $row['status'], $row['authorID'], $row['fullName'], $row['userProfileLink'], etc
}
}
现在我也在考虑加入评论系统。为此,我将创建一个包含以下字段的新表注释-commentID, targetStatusID, commentorID, comment, commentTimeStamp
我应该如何调整我的 mysql 查询,以便每个状态更新的评论也可以通过以下方式打印出来 -
status1
- comment1
- comment2
- comment3
[text field for new comment to status1]
status2
- comment1
[text field for new comment to status2]
status3
[no comments for this post]
[text field for new comment to status3]
status4
- comment1
- comment2
[text field for new comment to status4]
[no more posts to show]
请注意——
commentID是主键。 targetStatusID指示发表评论的特定状态更新。 commentorID是评论者的 ID。 评论是实际内容。 commentTimeStamp显示发表评论的时间。
顺便说一句,我想使用过程编程来完成整个事情,而不是 OOP。
解决此问题的方法之一是在 while 中使用查询($row = mysql_fetch_assoc($myQuery))
来选择$row['statusID']
.
但是,如果我想显示很多帖子,那会增加查询的数量。
那么我的方法应该是什么?
PS我遇到了类似的问题,但他们的答案都没有解决我的问题。