0

我试图whilewhile. 当 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;
  }
}
4

2 回答 2

2
  1. 您可以随时break使用循环,或者测试循环条件中的标志(一旦找到结果就设置);

  2. 您不需要以这种方式搜索结果,因为 MySQL 可以为您完成(效率更高,特别是如果您定义了合适的索引)

  3. 你真的不应该再使用ext/mysql它了——它从 PHP v5.5.0 开始就被弃用了,将来会被删除。

将它们放在一起,例如使用 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;
于 2013-01-18T12:46:15.527 回答
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;

  }
}
于 2013-01-18T12:40:46.140 回答