我有一个页面,其中显示了我的朋友和我的最新状态更新。
所涉及的表格是statusUpdates,users&朋友。
我用来提取必要数据的脚本是 -
$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 。
解决此问题的方法之一是在($row = mysql_fetch_assoc($myQuery))
内使用查询选择$row['statusID']
的评论。
但如果我想显示很多帖子,那会增加查询次数。
那么我的方法应该是什么?
P.S。我遇到了类似的问题,但他们的答案都没有解决我的问题。
答案 0 :(得分:0)
我已经为你的结构做了一个SQLfiddle。它不完全相同,但基础数据存在。
http://sqlfiddle.com/#!2/c91cb/16
使用此结果,您可以使用explode函数将注释提取到数组。我设法只使用分隔符和用户ID获取注释。如果有人可以编辑查询,那么它将获取用户名,这将是好的
修改强> 如果没有人会编辑查询,您可以爆炸这些ID并运行另一个查询,这样您就可以获得用户名。如果您需要帮助,请留下评论