2012-01-23 18 views
6

Cierto código aquí, quiero almacenar el resultado de la consulta mysql en una matriz con php, pero mi código devuelve el resultado: 2h, no es lo que deseo (el resultado correcto debería ser 36,35,34, 33,32)resultado de la consulta mysql en matriz php

<?php 
set_time_limit(59); 
mysql_select_db("mycoon",$db); 
mysql_query("SET NAMES utf8"); 
$result = mysql_query("SELECT id,link FROM mytable Order By id DESC LIMIT 0,5"); 
$new_array[] = $row; 
while ($row = mysql_fetch_array($result)) { 
    $new_array[$row['id']] = $row; 
    $new_array[$row['link']] = $row; 
} 
mysql_close($db);// close mysql then do other job with set_time_limit(59) 
foreach($new_array as $array){ 
    echo $array['id'].'<br />'; 
    echo $array['link'].'<br />'; 
} 
?> 

Resultado:

36 
http://localhost/img/img36.jpg 
36 
http://localhost/img/img36.jpg 
35 
http://localhost/img/img35.jpg 
35 
http://localhost/img/img35.jpg 
34 
http://localhost/img/img34.jpg 
34 
http://localhost/img/img34.jpg 
33 
http://localhost/img/img33.jpg 
33 
http://localhost/img/img33.jpg 
32 
http://localhost/img/img32.jpg 
32 
http://localhost/img/img32.jpg 
+1

Su SQL parece ser válido: 'DONDE Order By' - Falta la condición 'WHERE'. – hsz

+0

@hsz, a la derecha. de hecho, mi código original es muy largo, para una consulta fácil, he hecho un cortocircuito en mi código, pero olvídate de no eliminar 'where', gracias. –

+0

Duplicado de [¿Se puede devolver una matriz asociada con un índice de número?] (Http://stackoverflow.com/questions/339371/), [Para cada resultado en la consulta de MySQL, pulsar en matriz (complicado)] (http://stackoverflow.com/questions/3047896/) y *** muchos *** otros (¿cuántos podemos encontrar?). – outis

Respuesta

31

Creo que quería hacer esto:

while($row = mysql_fetch_assoc($result)){ 
    $new_array[] = $row; // Inside while loop 
} 

O tal almacén Identificación como clave demasiado

$new_array[ $row['id']] = $row; 

usando el segundo maneras que sería capaz de hacer frente a las filas directamente por su identificación, tales como: $new_array[ 5].

+0

vea mi anuncio, este resultado doble de retorno ... –

+0

@fishman Lo he actualizado. ¿Lo usaste así, o pusiste '$ new_array []' dos veces allí? – Vyktor

4

Uso mysql_fetch_assoc en lugar de mysql_fetch_array

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

+0

Resulta curioso ver que la función que crea una matriz se llama assoc en lugar de una matriz :-) – erm3nda

+0

mysql_fetch_assoc está en desuso desde PHP 7.0: http://php.net/manual/en/function.mysql-fetch-assoc.php Use mysqli_fetch_assoc en su lugar – Jonny

3

Qué tal esto:

while ($row = mysql_fetch_array($result)) 
{ 
    $new_array[$row['id']]['id'] = $row['id']; 
    $new_array[$row['id']]['link'] = $row['link']; 
} 

Para recuperar enlace y id:

foreach($new_array as $array) 
{  
    echo $array['id'].'<br />'; 
    echo $array['link'].'<br />'; 
} 
+0

, funciona bien. –

+0

No estás inicializando '$ new_array [$ row ['id']]' como array. No '$ new_array [$ row ['id']]] = array ('id' => $ row ['id'], 'link' => $ row ['link']);' (suponiendo que ¿QUIERES y necesitas valores/claves de cambio? ¿Trabajas más rápido? – Vyktor

+0

$ row ['id'] es dinámico, por lo que en un bucle, $ new_array [$ row ['id']] se ve así: $ new_array [1] = '...', $ new_array [2] = '.. . ', $ new_array [3] =' ... ', etc., prueba print_r ($ new_array); –

Cuestiones relacionadas