如果...
$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()的理解是不正确的!
谢谢你的时间!答案 0 :(得分:21)
我假设mysql_fetch_array()perfroms一个循环,所以我对如果使用while()与它一起感兴趣,如果它保存了一个嵌套循环。
没有。 mysql_fetch_array
只返回结果的下一行并前进内部指针。它不循环。 (在内部它可能会或可能不会在某处使用某个循环,但这是无关紧要的。)
while ($row = mysql_fetch_array($result)) {
...
}
执行以下操作:
mysql_fetch_array
检索并返回下一行$row
true
,则执行循环内容$row = mysql_fetch_array($result); foreach($row as $r) { ... }
执行以下操作:
mysql_fetch_array
检索并返回下一行$row
foreach
遍历数组的内容并执行循环内容的次数与数组中的项目一样多次在这两种情况下mysql_fetch_array
完全相同。你只有你编写的循环数。但是这两种结构都没有做同样的事情。第二行只会对结果的一行起作用,而第一行会遍历所有行。
答案 1 :(得分:1)
这取决于$results
中返回的行数,以及$row
中有多少列?
答案 2 :(得分:1)
考虑到只返回一行,在这两种情况下只会完成一个循环。虽然它会检查循环进入条件两次。
答案 3 :(得分:1)
对于第一个:您的程序将对查询返回的结果集中的每一行进行一次循环。您可以使用mysql_num_rows()
预先知道有多少结果。
对于第二个:这次您只使用结果集的一行,并且您正在为每个列执行某些操作。这就是foreach
语言构造的作用:它遍历数组$row
中每个条目的循环体。程序将通过循环的次数是可以预先知道的:它将对结果集中的每一列进行一次(可能你知道,但如果你需要确定它,你可以使用count($row)
)
答案 4 :(得分:1)
第一行:
$result = mysql_query($query);
返回php db资源。
第二行
while ($row = mysql_fetch_array($result))
循环查询返回的所有记录。
使用mysql_fetch_assoc代替
在这种情况下,该行具有key =>值对
在这之前就说出来了:
print_r($row)
你会明白的
如果使用mysql_fetch_assoc,则行的格式为:
$row["column1_name"] = column1_value;
$row["column2_name"] = column2_value;
对于这个:
$row = mysql_fetch_assoc($result)
foreach ($row as $columnName => $columnValue) {
...
}
您将从查询中获取第一行,并将迭代查询的第一个结果中的所有列。
答案 5 :(得分:1)
$query = "SELECT col1,col2,col3 FROM table WHERE id > 100"
$result = mysql_query($query);
if(mysql_num_rows($result)>0)
{
while($row = mysql_fetch_array()) //here you can use many functions such as mysql_fetch_assoc() and other
{
//It returns 1 row to your variable that becomes array and automatically go to the next result string
Echo $row['col1']."|".Echo $row['col2']."|".Echo $row['col2'];
}
}
答案 6 :(得分:1)
是的,mysql_fetch_array()
只返回一个结果。如果要检索多行,则需要将函数调用放在while
循环中。
两个例子:
这只会返回第一行
$row = mysql_fetch_array($result);
这将在每个循环上返回一行,直到结果集中没有更多行可用
while($row = mysql_fetch_array($result))
{
//Do stuff with contents of $row
}