我正在尝试使用 fetch_assoc 和一些条件语句在我的页面上显示查询的多个部分。我的第一个 while 循环显示了正确的信息,但循环 2 和 3 没有显示任何信息。过滤结果的正确方法是什么?
require_once('inc/connection.inc.php');
//create database connection
$conn = dbConnect();
//create SQL
$sql = 'SELECT * FROM menu';
$result = $conn->query($sql) or die(mysqli_error());
while($row = $result->fetch_assoc()){ if($row['category'] == 'appetizers'){ echo $row['title']; echo $row['price']; }
}
while($row = $result->fetch_assoc()){ if($row['category'] == 'salads'){ echo $row['title']; echo $row['price']; }
}
while($row = $result->fetch_assoc()){ if($row['category'] == 'desserts'){ echo $row['title']; echo $row['price']; }
}
最佳答案
为什么不这样做:
while($row = $result->fetch_assoc()){
if($row['category'] == 'appetizers'){
echo '<h1>Appetizers</h1>';
echo $row['title'];
echo $row['price'];
}
if($row['category'] == 'salads'){
echo '<h1>Salads</h1>';
echo $row['title'];
echo $row['price'];
}
if($row['category'] == 'desserts'){
echo '<h1>Desserts</h1>';
echo $row['title'];
echo $row['price'];
}
}
即,在单个 while
循环中使用条件。
或者
您可以使用mysqli_data_seek将指针重置为第一条记录并多次重复使用同一资源
while($row = $result->fetch_assoc()){
if($row['category'] == 'appetizers'){
echo $row['title'];
echo $row['price'];
}
}
mysqli_data_seek($result,0);
while($row = $result->fetch_assoc()){
if($row['category'] == 'salads'){
echo $row['title'];
echo $row['price'];
}
}
mysqli_data_seek($result,0);
while($row = $result->fetch_assoc()){
if($row['category'] == 'desserts'){
echo $row['title'];
echo $row['price'];
}
}
关于php - 带有条件语句的 mysqli fetch_assoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669455/