PHP & MySQL数据库查询仅显示单行,如何实现多行数据显示?
PHP查询MySQL仅显示一行数据的问题修复
问题描述
我用PHP和MySQL查询数据库表时遇到问题,原本希望展示表内所有数据,但目前仅能显示一行。以下是我的代码:
$query= mysqli_query($conn,"select* from food_table"); if (mysqli_num_rows($query)>0){ echo "<p style='color: green;'>See Below the Available Foods<br></p>"; while($row=mysqli_fetch_assoc($query)){ $food_name= $row['food_name']; $food_info = $row['food_info']; $food_price = $row['food_price']; $vendor_id = $row['vendor_id']; $default_miles = $row['default_miles']; $food_date= $row['date']; } $foods= array($food_name,$food_info,$food_price,$vendor_id,$default_miles, $food_date ); foreach($foods as $foodss){ echo "$foodss.<br/>"; } }
当前结果:仅能输出表中最后一行数据的各个字段值,无法显示所有行内容。
错误原因
问题出在循环逻辑位置错误:
while循环中每次都会覆盖$food_name、$food_info等单个变量的值,循环结束后这些变量仅保存了最后一行的数据。- 后续将这些单个变量存入数组
$foods并遍历,自然只能输出最后一行的字段内容。
修复方案
方案1:循环内直接输出(最简实现)
把输出逻辑放到while循环内部,每遍历一行就输出该行数据:
$query= mysqli_query($conn,"select* from food_table"); if (mysqli_num_rows($query)>0){ echo "<p style='color: green;'>See Below the Available Foods<br></p>"; while($row=mysqli_fetch_assoc($query)){ // 输出当前行的所有字段 echo $row['food_name'] . "<br>"; echo $row['food_info'] . "<br>"; echo $row['food_price'] . "<br>"; echo $row['vendor_id'] . "<br>"; echo $row['default_miles'] . "<br>"; echo $row['date'] . "<br><hr>"; // 加分隔线区分不同数据行 } }
方案2:存入二维数组后统一输出
先将所有行数据存入二维数组,再遍历数组统一输出,适合需要对数据做二次处理的场景:
$query= mysqli_query($conn,"select* from food_table"); $allFoods = []; // 定义二维数组存储所有数据行 if (mysqli_num_rows($query)>0){ echo "<p style='color: green;'>See Below the Available Foods<br></p>"; while($row=mysqli_fetch_assoc($query)){ // 将当前行数据添加到二维数组 $allFoods[] = $row; } // 遍历二维数组输出所有内容 foreach($allFoods as $food){ echo $food['food_name'] . "<br>"; echo $food['food_info'] . "<br>"; echo $food['food_price'] . "<br>"; echo $food['vendor_id'] . "<br>"; echo $food['default_miles'] . "<br>"; echo $food['date'] . "<br><hr>"; } }
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

