0

データベースに「favorites」という 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()に無効な引数が指定されました」というメッセージが表示されるため、明らかにメソッドが間違っています。曲を入手するのを手伝ってくれる人はいますか? 前もって感謝します。

4

3 に答える 3

0

これは次のようになります。

$favsr = mysql_fetch_array($getfavq, MYSQL_ASSOC);
foreach($favsr as $row) {
    $songid = $row['bookmarked_song_id'];
     ...
}
于 2012-05-22T18:29:27.860 に答える
0

mysql_fetch_array は 1 つの行のみをロードします。そのようにする必要があります。

$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'];}
于 2012-05-22T18:33:18.720 に答える
0

これは でタグ付けされていcodeigniterます。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
}

もちろん、ベスト プラクティスは、ユーザー データとお気に入りデータを別々のモデルにすることですが、現時点ではこれで問題ありません。

于 2012-05-22T20:21:48.370 に答える