2012-01-23 31 views
6

Bazı kodlar burada, php ile bir diziye mağaza mysql sorgu sonucu istiyorum, ama benim kod geri dönüş sonucum: 2h, ne istediğimi değil (doğru sonuç 36,35,34 olmalı, 33,32)mysql sorgusu sonucu php dizisi

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

Sonuç:

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

Ya da belki bir mağaza kimliği:

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

Kişisel SQL geçersiz görünüyor:

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

linki ve kimliği almak için 'NEREDE Sipariş By' - "NEREDE" koşulu yok. – hsz

+0

@hsz, sağa. Aslında, orijinal kodum çok uzun, kolay bir soru soracağım, kodumu kısalttım ama '' '' 'un kaldırılmayı unutma. –

+0

[Bir sayı dizini ile ilişkili bir dizi döndürebilir misiniz?] (Http://stackoverflow.com/questions/339371/), [MySQL sorgusunda her sonuç için, diziye (karmaşık)] itin (http://stackoverflow.com/questions/3047896/) ve *** *** *** diğerleri (kaç tane bulabiliriz?). – outis

cevap

31

bunu yapmak istediği düşünüyorum $new_array[ 5]: Çok

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

ikinci yollarını kullanarak anahtar olarak aşağıdakiler gibi, onların kimliği ile doğrudan satırları ele almak mümkün olacaktır. yerine mysql_fetch_array ait

+0

benim adit bakın, bu çift sonuç döndürür ... –

+0

@fishman Güncelleme. Bunu böyle mi kullandın ya da orada iki kez "$ new_array []" koydun mu? – Vyktor

3

Bunun neresi:

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

iyi çalışıyor. –

+0

$ new_array [$ row ['id']] 'dizisini dizi olarak başlatmıyorsunuz. $ New_array [$ row ['id']] = dizi ('id' => $ row ['id'], 'link' => $ row ['link']); '(İSTİYOR ve değişim değerlerine/anahtarlarına ihtiyaç var mı? – Vyktor

+0

$ satır ['id'] dinamik bir döngüde, $ new_array [$ row ['id']] gibi görünüyor: $ new_array [1] = '...', $ new_array [2] = '.. ., $ new_array [3] = '...', vb, print_r ($ new_array) deneyin; –