对 Mysql 数组进行切片


Slicing a Mysql array

我有一个 mysql 查询

$raw_resultsplaylists = mysql_query("SELECT songs.*, playlists.title as `playlist_title`
                                 FROM song_main AS songs
                                 JOIN songs_in_list AS playlist_songs 
                                  ON songs.ID = playlist_songs.song_id
                                 JOIN playlists 
                                 ON playlist_songs.playlist_id = playlists.ID
                                WHERE playlists.owner_id = '$userid'") or die(mysql_error());

检索如下信息数组:

  playlist_title      song_name              song_url        song_artist
     -------------------------------------------------------------------        
     foo1               woops                 www.                -
     foo1               blah                  www.                -
     foo2               blop                  www.                -
     foo1               woop                  www.                -
     foo3               bob                   www.                -      
     foo1               dylan                 www.                -

我的问题是我如何对 Mysql 数组进行切片以在单独的数组中获取具有相同playlist_title的所有行,以便我可以将它们显示在单独的 html 表中,例如:

表 1

 playlist_title      song_name              song_url        song_artist
    -------------------------------------------------------------------        
     foo1               woops                 www.                -
     foo1               blah                  www.                -
     foo1               woop                  www.                -    
     foo1               dylan                 www.                -

目录 表 2

    playlist_title      song_name           song_url        song_artist
     -------------------------------------------------------------------        
     foo2               blop                  www.                -
     foo2               dylan                 www.                -

等。。。

只是为了画出这个想法..

do{
  $groupedItems[$row['pname']][] = $row; //every row with the same pname will be "grouped" in the same array level
}while..

然后。。。

foreach($groupedItems as $group){
  //bla bla
}

SQL 中没有"数组"。都是行和列。你想要的是,也许:

SELECT * FROM table_name WHERE pname='foo1'

或者也许:

SELECT * FROM table_name ORDER BY pname

您可以在应用程序中进行拆分的位置。

对于 html 表 1:

mysql_query("SELECT songs.*, playlists.title as `playlist_title`
                             FROM song_main AS songs
                             JOIN songs_in_list AS playlist_songs 
                             ON songs.ID = playlist_songs.song_id
                             JOIN playlists 
                             ON playlist_songs.playlist_id = playlists.ID
                             WHERE playlists.owner_id = '$userid'
                             AND playlist_title='foo1'") or die(mysql_error());