如何在多维数组中存储SQL查询的所有结果?

时间:2011-03-18 15:09:07

标签: php sql

你好我想把我的数组转换成其他数组类型,plz帮助我。一世 我用这个

$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] => ) )

那么我应该用什么函数来获取这种格式的数组

5 个答案:

答案 0 :(得分:18)

$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

更新2月' 现在,2017年,它建议您使用PDO而不是mysql_ *。更安全,可以使用fetchAll原生返回(如“TrexXx答案”中所示)。

答案 1 :(得分:6)

避免执行循环的唯一方法是使用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);

答案 2 :(得分:2)

如果需要将查询返回的所有行存储在数组中,请尝试以下操作:

$result = array(); 

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

答案 3 :(得分:1)

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

通常你会在循环

中分配这样的结果
$rows = array();
while ($result = mysql_fetch_array($result, MYSQL_ASSOC)) {       
    $rows[] = $result;
}

答案 4 :(得分: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);
}