我基本上正在设计菜单的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错误,我应该更加关注我的代码。
答案 0 :(得分:3)
您的代码中有额外的$row = $result->fetch_assoc();
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
我希望这类问题合法且值得欢迎,但有权在解决后立即删除。