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条)

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?