2012-04-13 23 views
1

中更改'while'是否可以在while之间更改foreach in mysql_fetch_row in PHP?在'mysql_fetch_row'中通过'foreach'在PHP

例如

$result = mysql_query("SELECT * FROM test"); 

while ($row = mysql_fetch_row($result)) { 
    print_r($row); 
} 

这将采取所有记录(行)从查询SELECT * FROM test

但是,如果的foreach使用

foreach (mysql_fetch_row($result) as $row) { 
    print_r($row); 
} 

这将只需要第一条记录(行)的查询SELECT * FROM test

当与mysql_fetch_row一起使用时,是否有可能通过foreach循环获取所有记录?

+0

你可以使用框架,比如codeigniter – 2012-04-13 18:42:16

+4

@RPM,这与什么有关? – rid 2012-04-13 18:43:05

+0

因为它处理你想做的事情。其实从来没有想过。您正在尝试获取所有行,但未指定其列名称 – 2012-04-13 18:44:22

回答

3

你只能使用foreach如果:

  • 需要创建一个实现ArrayAccessIterator,或
  • 你获得整个结果的数组来设置和使用阵列foreach类。

可以使用for循环,但代码将低于可读:

for ($row = mysql_fetch_row($result); $row !== false; $row = mysql_fetch_row($result)) { 
    print_r($row); 
} 
+0

是的,您正确'for'可能 – 2012-04-13 19:00:33

+0

应该是'Iterator'而不是'ArrayAccess' – 2012-04-13 22:03:59

+0

@ dev-null-dweller,'ArrayAccess'和' Iterator'可以和'foreach'一起使用。更新了答案。 – rid 2012-04-13 22:16:24

1

没有,因为foreach需要一个阵列。这里,mysql_fetch_row()一次只返回一行。

+0

它可以用'for'循环 – 2012-04-13 18:47:36