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

Har*_*ldo 11 php mysql

如果...

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

这个动作:

while ($row = mysql_fetch_array($result)){
   ....
}
Run Code Online (Sandbox Code Playgroud)

这是做1循环(迭代x次)?

对于这个:

$row = mysql_fetch_array($result)
foreach($row as $r){
   ...
}
Run Code Online (Sandbox Code Playgroud)

这是做2个循环(迭代x次)?

其中x是结果的数量


编辑:

好的,谢谢你们,好吧我基本上把这个问题说得真的非常非常糟糕.

回想起来应该是这样的

'mysql_fetch_array()每次调用时都只返回一行'

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

谢谢你的时间!

dec*_*eze 21

我假设mysql_fetch_array()perfroms一个循环,所以我很感兴趣如果使用while()与它一起,如果它保存一个嵌套循环.

不.mysql_fetch_array只返回结果的下一行并前进内部指针.它不循环.(在内部它可能会或可能不会在某处使用某个循环,但这是无关紧要的.)

while ($row = mysql_fetch_array($result)) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

这样做如下:

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

这样做如下:

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

在这两种情况下mysql_fetch_array都做同样的事情.你只有你编写的循环数.但是这两种结构都没有做同样的事情.第二个只作用于结果的一行,而第一行将遍历所有行.