2011-03-18 74 views
6

你好我想每一个我的数组转换为其他数组类型,PLZ帮助我。我 中号使用此如何将SQL查询中的所有结果存储在多维数组中?

$row = mysql_fetch_array($result, MYSQL_ASSOC); 

和输出

Array ([user_id] => 250 [name] => a [age] => sfsf [pic_path] =>) 

,但我想以这种格式输出

Array ([0] => Array ([user_id] => 250 [name] => a [age] => sfsf [pic_path] =>) [1] => Array ([user_id] => 251 [name] => b [age] => sfsfs [pic_path] =>)) 

等什么功能,我应该我们进入这个数组格式

回答

14
$data = array(); // create a variable to hold the information 
while (($row = mysql_fetch_array($result, MYSQL_ASSOC)) !== false){ 
    $data[] = $row; // add the row in to the results (data) array 
} 

print_r($data); // print result 

更新Feb '17现在是2017年,建议您使用通过mysql_ *的PDO。很安全,可以用fetchAll本地返回(如`TrexXx的答案所示)。

+1

Tha布拉德克里斯蒂完成了它。你是我的英雄 – umar 2011-03-18 15:20:07

+0

@umar:不是问题,很乐意提供帮助。 – 2011-03-18 15:21:55

1
$row = array(); 
$row[] = mysql_fetch_array($result, MYSQL_ASSOC); 

通常你会分配的结果是这样一个循环

$rows = array(); 
while ($result = mysql_fetch_array($result, MYSQL_ASSOC)) {  
    $rows[] = $result; 
} 
1

你不能从您的SQL查询的结果集多维数组中只有一个命令。您需要为每个SQL结果行重复执行一次函数mysql_fetch_array。您也可以使用mysql_fetch_assoc来获得结果作为关联数组。

为了实现自己的目标:

$num = mysql_num_rows($result); 
for ($i = 0; $i < $num; $i++) 
{ 
    $myArray[] = mysql_fetch_assoc($result); 
} 
2

如果你需要存储在阵列中的查询返回的所有行,试试这个:

$result = array(); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ 
    $result[] = $row 
} 
4

只有这样,才能避免做一个循环将使用PDO(http://fr2.php.net/manual/fr/book.pdo.php)这是一种更好的方法来访问PHP中的数据库,你可以这样做:

<?php 
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', ''); 

$q = $pdo->query('select * from yourtable'); 
$r = $q->fetchAll(); 

var_dump($r); 
相关问题