duanao2585 2011-07-21 21:03
浏览 48

PHP / MYSQL while循环问题

<?php
include 'db.php';
$i=0;
$result15=mysql_query("select c.dishes from c");
 while($row=mysql_fetch_array($result15))
{
  if($row['dishes']!=NULL)
  {
  $dish[$i]=$row['dishes'];
 $i++;
}

}

  //$j=0;
 //while($j<$i)
 $j=0;
 while($j<$i)
 {

$result16=mysql_query("select * from dish_box where dish_name='$dish[$j]'");
while($row=mysql_fetch_array($result16))
{
    $v_id=$row['dish_id'];
    echo $v_id.'<br />';
}
$j++;

 }

 mysql_close();
 ?>

This while loop is echoing value only once. Please figure it out why loop is working onlu once?

  • 写回答

3条回答 默认 最新

  • dongxie45083 2011-07-21 21:08
    关注

    Better solution perhaps:

    // if you're using user input here, be sure to use mysql_real_escape_string
    /*
      $dishes = "'";
      foreach( $dish as $key => $val ) 
           $dishes .= "'" . mysql_real_escape_string( $val ) . "',";
      $dishes = substr( $dishes, 0, strlen( $dishes ) -2 ); // remove last ,
    */
    // otherwise implode the list
    $dishes = "'".implode("','", $dish)."'";
    
    // in either case use the IN operator
    // the semi-colon that was in the query won't work.
    $result16=mysql_query("select * from dish_box where dish_name in ($dishes)");
    // to confirm how many rows
    echo "result16 returned " . mysql_num_rows($result16) . 'rows.';
    while($row=mysql_fetch_array($result16))
    {
        $v_id=$row['dish_id'];
        echo $v_id.'<br />';
    }
    

    I just recalled that you were doing something like this in another question. You actually can combine both queries and save yourself some time:

    $result16=mysql_query("select * from dish_box where dish_name in ".
                          "(select c.dishes from c)");
    while($row=mysql_fetch_array($result16))
    {
        $v_id=$row['dish_id'];
        echo $v_id.'<br />';
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么