簡體   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