2013-06-25 63 views
0

我試圖把設置到一個數組整個結果如下:將整個mysql結果集轉儲到數組中的最有效方法?

while($myres[]=$result->fetch_array(MYSQLI_ASSOC)); 

這工作正常,但如果我有5只返回在我的結果數組有6指數最後被空。所以看起來我的數組總是一個索引太大。

我可以使用num_rows來循環結果,但這需要我設置自己的計數器並遞增它,我喜歡上面的行的速記效率,但是如何停止它填充最後一個空集的索引。

這是我使用fetch_all的替代方法,我發現它需要一個並非所有php服務器都安裝的特殊驅動程序。

回答

1

我只想用多行

$myres = array(); 
while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    $myres[] = $row; 

不過,如果你有它有沒有額外的數組賦值線

while ($row = $result->fetch_array(MYSQLI_ASSOC) && $myres[] = $row) { 

但或多或少相同。

0

表達

while($myres[]=$result->fetch_array(MYSQLI_ASSOC)); 

執行以下操作:

  1. 執行$result->fetch_array(MYSQLI_ASSOC)
  2. 這個表達式的結果分配給$myres[],由此附加到$myres陣列
  3. 通過一個條目$result->fetch_array(MYSQLI_ASSOC)作爲條件的結果while聲明並確定是否應退出循環。

注意,附加到$myres陣列的條目發生之前確定所述while循環應退出。這是你額外的行來自哪裏。

while ($record = $result->fetch_array(MYSQLI_ASSOC)) { 
$myres[] = $record; 
} 

你不會做的傳統方式失去任何效率

相關問題