【问题标题】:PHP inner loop not printing all the results of a MYSQL query [duplicate]PHP内部循环不打印MYSQL查询的所有结果[重复]
【发布时间】:2019-05-28 12:14:45
【问题描述】:

我有一张叫做 studien 的桌子:

我想创建一个下拉菜单,首先使用以下语句创建 5 个不同的类别(列类别):

SELECT DISTINCT category FROM studien ORDER BY category ASC

在另一个队列中,我收集研究名称的名称和 id,并将它们的类别与第一个队列中的类别进行比较。

由于某种原因,这不起作用。

我阅读了一些关于 multi_query 的内容,但是如何比较同一张表中的相同值?

提前致谢

$selectvar = "SELECT * FROM studien ORDER BY name ASC";
$selectvar2 = "SELECT DISTINCT category FROM studien ORDER BY category ASC";

$result = mysqli_query($mysqli, $selectvar);
$result2 = mysqli_query($mysqli, $selectvar2);

while ($row2 = mysqli_fetch_array($result2)) {
    echo "<option value='cat'>".utf8_encode($row2['category'])."</option>";
    while ($row = mysqli_fetch_array($result)) {
        if ($row2['category'] == $row['category']) {
            echo "<option value=".$row['id'].">".utf8_encode($row['name'])."</option>";
        }
    }
}

【问题讨论】:

  • 您很可能不想使用utf8_encode()。它几乎没有任何实际用途,是过去的神器。

标签: php mysql mysqli while-loop


【解决方案1】:

您的问题是您在内部循环中多次调用 mysqli_fetch_array($result) 而没有重置 $result 的指针。 PHP 不允许您在不先重置结果指针的情况下重新使用 mysqli_query() 的结果。您可以通过添加行来重置指针

mysqli_data_seek($result, 0);

每次调用 mysqli_fetch_array($result) 之前。

[抱歉我的格式,我在手机上]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2015-10-05
    相关资源
    最近更新 更多