[英]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.