dongzhuo5185 2014-05-15 04:48
浏览 44
已采纳

带有条件语句的mysqli fetch_assoc

I am trying to display multiple parts of a query on my page using fetch_assoc and some conditional statements. My first while loop is displaying the correct information, but loops 2 and 3 are not displaying any information. What would be the correct way to filter my results?

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'];
}  

}

  • 写回答

4条回答 默认 最新

  • duanban4769 2014-05-15 04:52
    关注

    Why not do it like this:

    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'];
       } 
    
    }
    

    i.e., use the conditions in a single while loop.

    OR

    You can use mysqli_data_seek to reset the pointer to the first record and re-use the same resource multiple times

    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'];
       }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?