2012-12-14 27 views
0

我正在嘗試製作一個簡單的專輯和各自歌曲的曲目管理器。我有兩個表,一個是專輯和一個歌曲如下:用兩個select查詢創建一個多維數組?有沒有更好的辦法?

albums: 
    id | title  | artfile | artmime | 
    1 Dilla Jams  222222 .png 
    2 Madlib Jams 333333 .png 
    songs 
    id | title | trackfile | trackmime | albumid 
    1 Streets 121212  .mp3  1 
    2 Mash  343434  .mp3  1 
    3 Accoridan 545454  .mp3  2 

我一直在試圖建立一個數組我的foreach()通過如下:

Array ( 
[0] => Array 
    ([id] => 1 [title] => Dilla Jams [artfile] => 222222 [artmim] => .png 
    [songs] => Array ([0] => Array 
        ([id] => 1 [trackfile] => 121212 [trackmime] => .mp3 [albumid] => 1) 
         [1] => Array 
          ([id] => 2 [trackfile] => 343434 [trackmime] => .mp3 [albumid] => 1))) 

    [1] => Array 
      ([id] => 2 [title] => Madlib Jams [artfile] => 333333 [artmim] => .png 
      [songs] => Array ([0] => Array 
          ([id] => 3 [trackfile] => 545454 [trackmime] => .mp3 [albumid] => 2)))) 

我已經嘗試使用PHP數據庫對象如下:

try{ 
$s = $pdo->query('SELECT id, title, artfile, artmime FROM album GROUP BY id DESC'); 
} 
catch (PDOExceptin $e) {/*catch statement here */} 

$songs = array(); 
$result = $s->fetchAll(); 
foreach ($result as $info) 
{ 
$album[] = array('id' => $info['id'], 
       'title' => $info['title'], 
       'artfile' => $info['artfile'], 
       'artmime' => $info['artmime'], 
       'tracklist' => $songs 
       ); 
try{ 
$sql = 'SELECT id AS songid, title AS songtitle, trackfile, trackmime, albumid FROM songs WHERE albumid = :id'; 
$s = $pdo->prepare($sql); 
$s->bindValue(':id', $info['id']); 
$s->execute(); 
} 
catch (PDOExceptin $e) {/*catch statement here */} 

foreach ($s as $sng) 
{ 
$sngs[] = array('songid' => $sng['songid'], 
     'songtitle' => $sng['songtitle'], 
     'filename' => $sng['trackfile'], 
     'mimetype' => $sng['trackmime'], 
     'albumid' => $sng['albumid'], 
      ); 
} 

array_push($songs, $sngs); 

} //end initial for each loop on album table query results   
+0

[你有什麼嘗試?](http://www.whathaveyoutried.com/)請參閱[FAQ](http://stackoverflow.com/faq)。 –

+0

什麼是您正在使用的SQL查詢? –

+0

剛剛添加了我嘗試使用的查詢之一來構建數組。 @johnconde – syllabix

回答

0

使用SELECT ... LEFT JOIN來從數據庫中獲得的結果,然後遍歷結果來生成陣列

+0

謝謝你的見解!它激勵我仍然運行我在上述問題中添加的雙重查詢,但是隨後使用條件來檢查是否在輸出HTML的每個循環運行時檢查song.albumid == album.id。謝謝! – syllabix

相關問題