问题
我正在创建一个标准的评论 – 回复脚本,用户可以在文章中发表评论,也可以回复其他用户的评论.我能够通过PHP和MysqL发布和检索评论.问题是我无法检索所有评论的“回复”.仅显示第一条评论的回复.删除第1条评论后,会显示对第2条评论的回复.
我桌子的数据结构
如果某人发布了新评论,那么他的姓名和评论将以自动递增ID输入到数据库中;默认情况下,回复值为“0”.
如果有人回复评论,则所有详细信息都以与上述相同的方式填写,但回复值除了回复发布的评论的id中的值,如下所示
(MysqL表的结构看起来像这样):
|id | name | comment | reply | |---|-------|-------------------------------|-------| | 1 |Pranav | This is Pranav's Comment | 0 | | 2 |Anita | This is the Anita's Comment | 0 | | 3 |Rishab | 1st reply to Pranav's comment | 1 | | 4 |Paul | 1st reply to Anita's comment | 2 | | 5 |James | 2nd reply to Pranav's comment | 1 | | 6 |Rachel | This is Rachel's comment | 0 | | 7 |Pranshu| 1st Reply to Rachel's comment | 6 | | 8 |Leora | 2nd Reply to Anita's comment | 2 | | 9 |Pekka | 3rd Reply to Anita's comment | 2 |
例如.如果有人回复Anita的评论,其id = 2;然后,发布的新回复的回复列的值将自动变为2.
$result保存comments数组
$result_reply保存这些评论的回复
while($row = MysqLi_fetch_array($result))循环显示注释
嵌套while($row_reply = MysqLi_fetch_array($result_reply))循环被写入以显示每条评论下的相应回复,但这不会发生.
if($reply_reply == $id)循环检查具有特定注释的id的回复列代码,以便特定回复仅显示在相应注释下.
数据库的名称是’oxygentimes’,表是’评论’
<?PHP
$dbc = MysqLi_connect('localhost', 'root', '', 'oxygentimes') or die('Error connecting to MysqL server');
$query = "SELECT * FROM `comments` WHERE reply=0";
$query_reply = "SELECT * FROM `comments` WHERE reply!=0";
$result = MysqLi_query($dbc, $query) or die('Error quering database');
$result_reply = MysqLi_query($dbc, $query_reply) or die('Error quering database');
while ($row = MysqLi_fetch_array($result)) {
$id = $row['id'];
$name = $row['name'];
$comment = $row['comment'];
$reply = $row['reply'];
if ($reply == 0) {
echo "
<div class='comment'>
<div>$name</div>
<div>$comment</div>
<input type='hidden' value='$id'>
</div>";
while ($row_reply = MysqLi_fetch_array($result_reply)) {
$name_reply = $row_reply['name'];
$comment_reply = $row_reply['comment'];
$id_reply = $row_reply['id'];
$reply_reply = $row_reply['reply'];
if ($reply_reply == $id) {
echo "
<div class='reply-comment'>
<div>$name_reply</div>
<input type='hidden' value='$id_reply'>";
echo "<div>Reply: $comment_reply</div>
</div>";
};
};
}
}
我只看到第一条评论下的回复.删除第一条评论后,会显示第二条评论的回复.
请帮忙!无法弄清楚错误.
解决方法:
while ($row = MysqLi_fetch_array($result)) {
// construct query here
$result_reply = MysqLi_query($dbc, $query_reply)
or die('Error quering database');
//... etc.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。