2012-04-13 22 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