-1

データベースには、テーブル「曲」と「ジャンル」の 2 つのテーブルがあります。

  • テーブル「songs」には、id_song (PK)、song_title、lyric、id_genre の 3 つの列があります。
  • テーブル「ジャンル」には、id_genre (PK)、ジャンルの 2 つの列があります。

テーブル「ジャンル」には、次のものがあります。

|| id_genre | || ジャンル ||

||.......1.......|..ポップ...||

||.......2.......|..ロック..||

||.......3.......|..ジャズ...||

||.......4.......|.クラシック.||

2 つのテーブル間の関係:

song.id_genre ジャンル.id_genre への FK

次のような変数があります。

$search_genre = 'pop';

で曲を検索したい$search_genre

$query = mysql_query("SELECT song.id_song, song.song_title, genre.genre FROM song WHERE genre='$search_genre' INNER JOIN genre ON song.id_genre=genre.id_genre ORDER BY id_song");

しかし、うまくいきません。私は何をすべきか?ご協力いただきありがとうございます。

質問 2: php で結果を表示するにはどうすればよいですか?

4

3 に答える 3

7

初め!

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

2番!

すでに開始している場合はmysql_*、少なくともパラメーターをエスケープしてください。そうしないと、次の l33t 志望のハッカーがサイトにハッキングするのを待っている、ギャップのある SQL インジェクション セキュリティの脆弱性を残すことになります!

$search_genere = mysql_real_escape_string($search_genere);
$query = mysql_query("SELECT song.id_song, song.song_title, genre.genre FROM song INNER JOIN genre ON song.id_genre=genre.id_genre WHERE genre.genre='".$search_genre."' ORDER BY id_song");

ただし、上記のボックス内のリンクをお読みください。

このエラーが発生した理由は、構文エラーが原因です。

于 2013-05-14T07:54:48.563 に答える