为什么不让人们使用for
,foreach
或do..while()
,为什么省略增量计数器呢?
`<?php while ( $fa = mysql_fetch_array($sel1) )//uesd mysql_fetch_array() function in while loop
{
echo $fa['cid'];//display client id
}
//虽然w3school中的语法允许使用此
$x = 1;
while($x <= 5) {
echo "The number is: $x";
$x++;
}
?>//show why we don't used mysql_fecth_array() like this
答案 0 :(得分:2)
这是一种过时的信息。在某种程度上,你会问一个社区刚刚接受的问题。我可以更好地了解,而我有信息要显示......做某事。你通常不会说 foreach这些项目......尽管你可以做某事。但是,另一个问题是mysql_fetch_array返回FALSE if there are no more rows
。这在foreach中不起作用,因为它不是数组。一个for也会失败,因为要检查a的完成,你必须去某个点并结束.. FALSE不是一个有效的检查点(我曾尝试或使用过)。
@Michael Berkowski补充道:
从PHP 5.4及更高版本开始,mysqli_result类确实具有Iterator支持,这意味着您可以执行$result = mysqli_query(...);
,然后执行foreach ($result as $row) {...}
,它将获取关联数组
虽然这不是最常用的形式,但这就是为什么我们有问题。
你可以do...while
,但为什么你呢。您没有从获取阵列获得的大部分信息。
虽然被接受并且通常更好。如果mysql以任何方式失败,都不会失败并且有后退。
最后......不要再使用mysql_ *了。切换到mysqli_ *。更安全..更聪明..更好。
答案 1 :(得分:0)
你可以完美地使用任何其他循环来获得查询结果。
人们大多使用while循环的原因是因为它只是最简单的方法。这样做的原因是,如果没有任何额外的代码行,我们就不知道返回了多少行,因此我们不知道有多少次我们必须迭代才能从结果中获取所有行。 br />每次执行mysql_fetch_array()
时,它都会为我们提供下一行数据,当它用完行时,它会返回false。所以使用while循环我们基本上说:虽然还有一个新行,但我们从中获取数据,获取下一行,当我们用完行时,我们停止。 的
例如,您可以使用for循环完成相同的操作。它不是那么简单。
使用for循环迭代mysql_fetch_array():
$r = mysql_query($query);
$num_rows = mysql_num_rows($r);
for($i = 0; $i < $num_rows; $i++) {
echo mysql_fetch_array()[$id];
}
其他选择是在for循环中放置一个if语句来检查是否有新行,否则,我们可以退出for循环。
使用while循环,我们将循环和if语句结合起来。