2012-05-22 26 views
0

我有一个名为“收藏夹”的数据库中有3列(user_id,bookmarked_song_id,bookmark_tag),我想获取当前用户的所有Bookmarked_song_id。获取当前用户的所有收藏夹

$username = $this->session->userdata('username'); 
$uidq = mysql_query('SELECT user_id FROM users WHERE username="' . $username . '"'); 
$rq = mysql_fetch_assoc($uidq); 
$user_id = $rq['user_id']; 
$getfavq = mysql_query("SELECT * FROM favorites WHERE user_id=$user_id"); 
$favsr = mysql_fetch_array($getfavq); //contains all the information from the favorites database where user_id is the user_of the currently logged-in user 

而且我不知道接下来要使用什么......我想有这样的:

foreach($favsr['bookmarked_song_id'] as $song_id) { 
$getsongq = mysql_query("SELECT * FROM songs WHERE song_id=$song_id"); 
$getsongr = mysql_fetch_assoc($getsongq); 
$singer = $getsongr['singer']; 
$song_name = $getsongr['song_name'];} 

显然的方法是错误的,因为我得到:“为的foreach提供了无效的参数( )”。任何人都可以帮我获取歌曲吗?提前致谢。

回答

0

它应该是这样的:

$favsr = mysql_fetch_array($getfavq, MYSQL_ASSOC); 
foreach($favsr as $row) { 
    $songid = $row['bookmarked_song_id']; 
    ... 
} 
0

mysql_fetch_array只会加载一行, 它应该是这样的

$getfavq = mysql_query("SELECT * FROM favorites WHERE user_id=$user_id"); 
while $favsr = mysql_fetch_array($getfavq); 
    {$songid=$favsr['bookmarked_song_id']; 
    $getsongq = mysql_query("SELECT * FROM songs WHERE song_id=$song_id"); 
    $getsongr = mysql_fetch_array($getsongq); 
    $singer = $getsongr['singer']; 
    $song_name = $getsongr['song_name'];} 
0

你有这个标记codeigniter。如果你建立一个笨的应用程序,你应该使用CI的数据库库:

$username = $this->session->userdata('username'); 

//Select your user 
$this->db->select('user_id'); 
$this->db->where('username', $username); 
$this->db->limit(1); 
$user_query = $this->db->get('users'); 

if($user_query->num_rows() > 0) 
{ 
    // We found a user 
    $user = $user_query->row(); // select a single row 

    // Grab this user's favorites 
    $this->db->where('user_id', $user->id); 
    $favorites_query = $this->db->get('favorites'); 

    $songs = $favorites_query->result(); 

    if($songs) 
    { 
     foreach($songs as $song) 
     { 
      $song_id = $song->bookmarked_song_id; 
      $tag = $song->bookmark_tag; 

      // Do stuff with data. 
     } 
    } 
    else 
    { 
     // No songs/favorites found, catch error 
    } 

} 
else 
{ 
    // No such user found, catch error 
} 

当然,最好的做法是让你的用户数据,并在不同的模型您的收藏夹数据,但这应该对现在的工作。

+1

是的,我使用Codeigniter,因此您的答案完全符合我的项目。我只是写了主要想法,之后我可能会将其转换为Codeigniter风格的代码。 – dpanayotov

+0

优秀。祝你好运! – Seabass