2

您好,我正在尝试查询我的数据库表“shout_out”,在 while 循环期间,我有一个 if 语句来检查“convers_id”列是否已从 no_reply 更改。如果它有,我希望另一个查询运行并从shout_out_reply 表中获取具有相同“convers_id”列的所有行。我正在尝试获得与 facebook“墙”类似的布局。有人发表评论,其他人可以回复该评论,回复位于原始评论下方。

我一直认为 mysqli_query($dbc, $query_shout_out_reply) 失败了。但有相同“convers_id”的回复

$query_shout_out = "SELECT * FROM shout_out WHERE sent_to = '$username' ";
$shout_out_query = mysqli_query($dbc, $query_shout_out);

if (mysqli_num_rows($shout_out_query) != 0) {
    while ($row = mysqli_fetch_array($shout_out_query)) {
        echo '<td class="shout_out_display" width="550">';
        echo $row['message'] . ' <br/><br/> From ' . $row['sent_by'] . ' at ' . $row['date_sent'];
        echo '</td></tr>';
        echo $row['convers_id'];
        if ($row['convers_id'] != "no_reply") {
            $query_shout_out_reply = "SELECT * FROM shout_out_reply WHERE convers_id = " . $row['convers_id'];
            $shout_out_reply_query = mysqli_query($dbc, $query_shout_out_reply);

            while ($reply_row = mysqli_fetch_array($shout_out_reply_query)) {
                echo ' <tr width="550"><td width="125" > &nbsp </td>';
                echo '<td width="425"  class="shout_out_reply_display">';
                echo $reply_row['message'] . '<br/><br/>Reply From ' . $reply_row['sent_by'] . ' at ' . $reply_row['date_sent'];
                echo '</td></tr>';
            }
        }

    }
}
4

2 回答 2

1
SELECT * FROM shout_out AS so LEFT JOIN shout_out_reply AS sor ON sor.convers_id = so.convers_id WHERE so.sent_to = '$username' AND so.convers_id != 'no_reply'

这里的关键是使用 SQL JOIN 语句。它会在一个语句中为您提供两个表的结果。...那么您不必遍历循环。发出所有这些 sql 请求。

于 2011-12-15T21:49:30.343 回答
0

您可以设计表这样的结构,这样您就可以轻松地创建连接和复杂的查询。首先,您需要了解作品如何加入以及何时必须使用。检查谷歌这一点。

于 2011-12-15T21:52:12.243 回答