web-dev-qa-db-fra.com

résultat de la requête mysql dans le tableau php

Du code ici, je veux stocker le résultat de la requête mysql dans un tableau avec php, mais mon code retourne le résultat: 2h, pas ce que je souhaite (le résultat correct devrait être 36,35,34,33,32)

<?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 />';
}
?>

Résultat:

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
10
fish man

Je pense que tu voulais faire ça:

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

Ou peut-être aussi stocker l'identifiant comme clé

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

En utilisant les deuxièmes moyens, vous pourriez adresser les lignes directement par leur identifiant, comme: $new_array[ 5].

38
Vyktor

Utilisez mysql_fetch_assoc au lieu de mysql_fetch_array

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

4
makriria

Et ça:

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

Pour récupérer le lien et l'identifiant:

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