2011-02-08 52 views
0
$data = mysql_query("SELECT * FROM users); 

現在數據存儲在$data變量中。我想將mysql數據存儲在數組中並返回。Mysql查詢mysql_fetch_array

$data_array = mysql_fetch_assoc($data); 

這將存儲數據的第一行(第一個數組)。

現在存儲所有的行我想知道我該怎麼做。

回答

-1
$res = mysql_query($sql); 
    $data = array(); 
    while(($row[] = mysql_fetch_array($res)) !== false) { 
    } 
-1

如果您的結果集很大,那麼這樣做不是一個好主意。它可以在進程中使用很多的內存。

說了這麼多,你可以存儲一個這樣的數組對整個事情:

<?php 

$query="select * from table_xyz"; 
$result = mysql_query($query) or die(mysql_error()); 
$arr_table_result=mysql_fetch_full_result_array($result); 

function mysql_fetch_full_result_array($result) 
{ 
    $table_result=array(); 
    $r=0; 
    while($row = mysql_fetch_assoc($result)){ 
     $arr_row=array(); 
     $c=0; 
     while ($c < mysql_num_fields($result)) {   
      $col = mysql_fetch_field($result, $c);  
      $arr_row[$col -> name] = $row[$col -> name];    
      $c++; 
     }  
     $table_result[$r] = $arr_row; 
     $r++; 
    }  
    return $table_result; 
} 

?> 

Got the code sample from the PHP site

+2

聖鉬那是醜陋的。您可以通過簡單地編寫查詢(指定帶有別名而不是*的字段)來避免整個業務,然後$ row將包含這些字段別名作爲鍵,然後將其填入另一個表中。整個代碼塊將減少到大約6行。 – 2011-02-08 19:20:34

3

的標準方法:

$res = mysql_query($sql); 
    $data = array(); 
    while(($row = mysql_fetch_array($res)) !== false) { 
     $data[] = $row; 
    } 

// now $data is an array with all rows 

http://php.net/manual/en/function.mysql-fetch-array.php

返回字符串的數組 對應於所提取的行,或 FALSE如果沒有更多的行。

該方法適用於mysql_fetch_*函數。

1
while ($row = mysql_fetch_assoc($data)) 
    { 
    array_push($data_array,$row); 
    } 
+0

這個和Pablo Santo Cruz的區別是什麼 – 2011-02-08 22:13:14