2011-02-08 67 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