繁体   English   中英

PHP / mySQLi:循环内的循环不会返回所有结果

[英]PHP/mySQLi : Loop inside a loop doesn't return all results

我基本上是在设计菜单的Web前端,我已经创建了一个系统来添加菜单,现在我需要向用户阅读。 我还需要将事物组织成类别(也就是div)。 为此,我编写了代码(我认为)应该获得一个类别列表(列中的不同结果),然后获取每个类别的每餐的名称和价格。

问题是它没有显示所有类别或膳食。

这是我的数据库结构,ID是主要索引 数据库结构 我的代码看起来像这样,

        <?php
        mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX);
        $db = new mysqli('localhost', 'username', 'password', 'db');
        if($db->connect_errno > 0){
            die('Unable to connect to database [' . $db->connect_error . ']');
        }

        $query = "SELECT DISTINCT `mealtype` FROM `meals`";
        if(!$result = $db->query($query)){
            die('There was an error running the query [' . $db->error . ']');
            }
        else {
            $row = $result->fetch_assoc();
            while($row = $result->fetch_assoc()){
                $mealtype=$row['mealtype'];
                echo "<div class='pure-u-1-3'><h1>".strtoupper($mealtype)."</h1>";
                $mealquery = "SELECT * from `meals` where `mealtype` = '".$mealtype."'";
                $mealresult = $db->query($mealquery);
                $mealrow = $result->fetch_assoc();
                echo $db->error;
                while($mealrow = $mealresult->fetch_assoc()){
                    echo "<b>".$mealrow['name']."</b>".$mealrow['price'].'<br>';
                    }
                echo "</div>";

            }

        }


        $db->close();
?>

我还注意到没有mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX); 我收到警告,但据我了解,这是由于使用了DISTINCT选择器。

当错误报告完全激活时,它返回

PHP Fatal error:  Uncaught exception 'mysqli_sql_exception' with message 'No index used in query/prepared statement SELECT DISTINCT `mealtype` FROM `meals`' in (workingdir)/index.php:42

我完全不知道为什么它不会显示所有内容,我确定它与双循环有关,因为当我只是要求它返回菜单管理器中的表时,它工作正常。

编辑:问题结果是一个1D13T错误,我应该更加关注我的代码。

你有额外的$row = $result->fetch_assoc(); 在你的代码中

虽然那个错误,每个人都如此印象深刻,与这个问题无关。

顺便说一句,mysqli报告的最佳设置是

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

我希望这类问题是合法和受欢迎的,但有权在解决后立即删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM