一尘不染

while($ row = mysql_fetch_array($ result))-正在执行多少个循环?

mysql

如果…

$query = "SELECT col1,col2,col3 FROM table WHERE id > 100"
$result = mysql_query($query);

为此操作:

while ($row = mysql_fetch_array($result)){
   ....
}

这是做1个循环(重复x次)吗?

为此:

$row = mysql_fetch_array($result)
foreach($row as $r){
   ...
}

这是做2个循环(重复x次)吗?

其中x是结果数


编辑:

好,谢谢大家,好吧,我基本上非常,非常糟糕地回答了这个问题。

回想起来,应该是

“ mysql_fetch_array()每次调用仅返回一行吗?”

我现在很高兴我对mysql_fetch_array()的理解是不正确的!

谢谢你的时间!


阅读 679

收藏
2020-05-17

共1个答案

一尘不染

我假设mysql_fetch_array()绕过一个循环,所以我对是否将while()与它结合使用感兴趣,如果它可以保存一个嵌套循环。

编号mysql_fetch_array仅返回结果的下一行并前进内部指针。它不会循环。(内部可能会或可能不会在某个地方使用某些循环,但这无关紧要。)

while ($row = mysql_fetch_array($result)) {
   ...
}

这将执行以下操作:

  1. mysql_fetch_array 检索并返回下一行
  2. 该行被分配给 $row
  3. 计算表达式,如果计算结果为true,则执行循环的内容
  4. 程序重新开始
$row = mysql_fetch_array($result);
foreach($row as $r) {
    ...
}

这将执行以下操作:

  1. mysql_fetch_array 检索并返回下一行
  2. 该行被分配给 $row
  3. foreach 循环遍历数组的内容,并执行循环内容的次数与数组中的项数相同

在这两种情况下mysql_fetch_array,都做完全相同的事情。您只有编写的循环数。但这两种构造都不会做相同的事情。第二个仅作用于结果的一行,而第一个将遍历所有行。

2020-05-17