在PHP中使用相同的mysql查询迭代两次

时间:2017-12-23 21:00:57

标签: php mysqli mariadb

我有一个MySQL帖子,如下所示:

| id | post                                 | parent |
+----+--------------------------------------+--------+
|  1 |    Hello world                       |      0 |
|  2 |    response to 1                     |      1 |
|  3 |    response to 1                     |      1 |
|  4 |    new opening post                  |      0 |

如果帖子是开场帖,则父级设置为0.如果它是对开场帖的回复,则其父级是ID的值。我试图获取表格,打印每个开头帖子,然后打印下面的回复缩进。这是我到目前为止所做的,但它不起作用:

while ($row = mysqli_fetch_assoc($result)) {
        if ($row["parent"] == 0) {
        echo "" . $row["id"] . " | " . $row["post"] . "<br>"; }
                while ($row2 = mysqli_fetch_assoc($result)) {
                        if ($row["id"] == $row2["parent"]) {
                                echo ">" . $row2["id"] . " | " . $row2["post"] . "<br>"; }}}

我一直在互联网上寻找一段时间的解决方案现在无济于事;我已经尝试将mysql结果放入数组中,但这也没有用。如果有人能指出我正确的方向,我真的很感激。提前谢谢!

这不是How to go through mysql result twice?的副本,因为我希望继续通过表格,而不是在每次OP后重置。

1 个答案:

答案 0 :(得分:-1)

使用一个statment为id,post和parent创建三个数组,然后将每个行数据添加到这些数组,并使用for循环创建显示结果,就像这个代码可能有用。

$id=array();
$post=array();
$parent=array();
while ($row = mysqli_fetch_assoc($result)) {
$id[]=$row["id"];
$post[]=$row["post"];
$parent[]=$row["parent"];
}
for($i=0;$i<count($id);$i++){
if($parent[$i]==0){
echo $parent[$i];
for($j=0;$j<count($parent);$j++){
if($parent[$j]==$id[$i]){
echo $post[$j];
}
}
}