我试图在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;
}
}
答案 0 :(得分:2)
您可以随时从循环中break
,或者在循环条件中测试一个标志(在找到结果后设置);
您不需要以这种方式搜索结果,因为MySQL可以为您执行此操作( 更高效,尤其是如果您已定义合适的索引); < / p>
你真的不应该再使用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;
答案 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;
}
}