while while循环使用mysql fetch循环

时间:2013-01-18 12:34:41

标签: php mysql while-loop

我试图在while内运行while。当while循环运行时,让我们说第五次并检测数据库中的项目。我希望它将项目打印到第五个循环。

但它会在循环结束时(直到第31次)重现。

有人知道如何在第五次循环时将它打印到循环中吗?而不是循环的结束?

$num = 31
$i=0;
while($i<$num){
  $i++;
  mysql_num_rows(mysql_query("SELECT * FROM webCalendar WHERE day='$i'"))
  $sql = mysql_query("SELECT * FROM webCalendar WHERE day='$i'");
  while($result = mysql_fetch_object($sql)) {
    $info.= <<<EOD
    $result->descrip
    EOD;
  }
}

2 个答案:

答案 0 :(得分:2)

  1. 您可以随时从循环中break,或者在循环条件中测试一个标志(在找到结果后设置);

  2. 您不需要以这种方式搜索结果,因为MySQL可以为您执行此操作( 更高效,尤其是如果您已定义合适的索引); < / p>

  3. 你真的不应该再使用ext/mysql了 - 自PHP v5.5.0起它已被弃用,将来会被删除。

  4. 将所有内容放在一起,例如使用PDO:

    $dbh = new PDO("mysql:dbname=$dbname", $username, $password);
    $qry = $dbh->query('
      SELECT descrip FROM webCalendar WHERE day = (
        SELECT MIN(day) FROM webCalendar WHERE day BETWEEN 1 AND 31
      )
    ');
    while (($descrip = $qry->fetchColumn()) !== false) $info .= $descrip;
    

答案 1 :(得分:0)

$num = 31
$i=0;
$is_found = false;
while($i<$num && $is_found == false){

  $i++;


  mysql_num_rows(mysql_query("SELECT * FROM webCalendar WHERE day='$i'"))
  $sql = mysql_query("SELECT * FROM webCalendar WHERE day='$i'");
  while($result = mysql_fetch_object($sql))
  {
    $info.= <<<EOD
    $result->descrip
    EOD;

    $is_found = true;

  }
}