2012-01-23 17 views
6

Jakiś kod tutaj, chcę przechowywać wynik zapytania mysql do tablicy z php, ale mój wynik zwrotu kodu: 2h, nie jest to, co chcę. (Poprawny wynik powinien wynosić 36,35,34, 33,32)wynik zapytania mysql do php tablicy

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

Wynik:

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

Twój SQL wydaje się być nieprawidłowy: 'GDZIE Order By' - brak warunku "WHERE". – hsz

+0

@hsz, racja. w rzeczy samej, mój oryginalny kod jest bardzo długi, dla łatwego pytania, zwróciłem swój kod, ale zapomnij nie usuwać "gdzie", dzięki. –

+0

Dup z [Czy możesz zwrócić powiązaną tablicę z indeksem liczb?] (Http://stackoverflow.com/questions/339371/), [Dla każdego wyniku w zapytaniu MySQL, naciśnij na tablicę (skomplikowane)] (http://stackoverflow.com/questions/3047896/) i *** wiele *** innych (ile możemy znaleźć?). – outis

Odpowiedz

31

myślę, że chciał to zrobić:

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

czy może przechowywać identyfikator jako klucz zbyt

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

wykorzystując drugi sposoby byłbyś w stanie rozwiązać wiersze bezpośrednio przez ich ID, takie jak: $new_array[ 5].

+0

zobacz moją aditę, to podwójne wyniki ... –

+0

@fishman Zaktualizowałem. Czy używałeś tego w ten sposób, czy też umieściłeś tam dwukrotnie '$ new_array []'? – Vyktor

3

Co o tym:

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

Aby pobrać link i ID:

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

to działa dobrze. –

+0

Nie uruchamiasz '$ new_array [$ row ['id']]] jako tablicy. Czy '$ new_array [$ row ['id']] = array ('id' => $ row ['id'], 'link' => $ row ['link']);' (zakładając, że CHCESZ i potrzebujesz zmienić wartości/klucze) działa szybciej? – Vyktor

+0

$ wiersz ['id'] jest dynamiczny, więc w pętli, $ new_array [$ row ['id']]] wygląda następująco: $ new_array [1] = '...', $ new_array [2] = '.. . ', $ new_array [3] =' ... ', etc, wypróbuj print_r ($ new_array); –

Powiązane problemy