2011-03-18 6 views
6

hola a todos Quiero convertir mi matriz en otro tipo de matriz, por favor ayúdenme. Me estoy usando este¿Cómo almaceno todos los resultados de una consulta SQL en una matriz multidimensional?

$row = mysql_fetch_array($result, MYSQL_ASSOC); 

y la salida es

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

pero quiero que el la salida en este formato

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

así que lo que la función i debería nosotros para conseguir el arreglo en este formato

Respuesta

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 

Actualización Feb '17 Ahora que es 2017, se recomienda utilizar PDO sobre mysql_ *. Mucho más seguro y puede devolverlo de forma nativa con fetchAll (como se muestra en la respuesta de `TrexXx).

+1

Tha Nks Brad Christie está hecho. Eres mi héroe – umar

+0

@umar: No hay problema, me alegra ayudarte. –

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

Lo normal sería asignar los resultados como este en un bucle

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

No se puede obtener una matriz multidimensional del conjunto de resultados de la consulta SQL en un solo comando. Debe repetir la función mysql_fetch_array una vez por cada fila de resultados de SQL.

También puede usar mysql_fetch_assoc para obtener los resultados como una matriz asociativa.

para lograr su objetivo:

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

Si necesita almacenar todas las filas devueltas por la consulta en una matriz, intente esto:

$result = array(); 

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

La única forma de evitar hacer un bucle sería utilizar DOP (http://fr2.php.net/manual/fr/book.pdo.php), que es una mejor manera de acceder a la base de datos en PHP y se puede hacer esto:

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

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

var_dump($r); 
Cuestiones relacionadas