2017-02-28 378 views
1

它們是mysqli_result的兩個函數。什麼是最好的使用,fetch_array(MYSQLI_ASSOC)或fetch_all(MYSQLI_ASSOC)?

  • fetch_array():獲取結果行。

這樣,查詢每一行到數據庫?

  • fetch_all():獲取所有結果行。

而這樣,只查詢一次到數據庫?

我不知道如何以最好的方式和最有效的方式來做到這一點。

穿戴例子:

1.-fetch_array():

$resultUsers = getAllUsers($db); 
while($row = $resultUsers->fetch_array()){ 
    echo $row['name']; 
} 

2.- fetch_all():

$resultUsers = getAllUsers($db); 
foreach ($resultUsers->fetch_all(MYSQLI_ASSOC) as $value) { 
    echo $value['name'] . "<br>"; 
} 

2.A.-

foreach (getAllUser($db)->fetch_all(MYSQLI_ASSOC) as $value) { 
    echo $value['name'] . "<br>"; 
} 

如果有更好的方法來做到這一點,我希望你的幫助。

+0

不,在兩種情況下查詢都只針對數據庫運行一次;取指針對查詢中的結果集起作用;並且通常'fetch_all()'對於大型結果集非常需要內存,因此不應該使用 –

回答

0

對於您的特殊情況,您需要將fetch_all()移到裏面,因爲名爲getAllUsers()的函數應該會爲您提供所有用戶,而不是mysqli結果。

所以應該

$allUsers = getAllUsers($db); 

,然後$發送到模板的輸出ALLUSERS像

<?php foreach ($allUsers as $user) { ?> 
    <?=$user['name']?> 
>?} ?> 
+0

謝謝,您是對的。 – RodriKing

0

這不是什麼大不了的考慮。你可以根據你的用例&的可用性來選擇其中的任何一個。

Check this out.

但畢竟嘗試遷移到PDOPHP Data Objects儘快。在PHP 7.0中完全刪除了mysql * _functions。&其中大部分在PHP 5.5中被認爲不推薦使用。

+1

'mysql'函數被棄用/刪除;但OP使用'mysqli',這是不被棄用或刪除 –

相關問題