0

while内で aを実行しようとしていますwhile。while ループが5 回目に実行され、データベース内のアイテムが検出された場合を考えてみましょう。5回目のループまで印刷してほしい。

ただし、ループの最後 (31 番目まで) まで自己複製します。

5回目にループしたときにのみループに出力する方法を知っている人はいますか? そして、ループの終わりまでではありませんか?

$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. PHP v5.5.0ext/mysqlで廃止され、将来的に削除される予定です。

たとえば、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 に答える