2013-05-14 87 views
-1

我在數據庫,表'歌曲'和'流派'上有2個表格。使用mysql_query php顯示數據

  • 表 '歌曲' 有3列:id_song(PK),SONG_TITLE,歌詞,id_genre
  • 表 '流派' 具有2列:id_genre(PK),流派

在表'流派」,我有:

|| id_genre |流派||

|| ....... 1 ....... | ..pop ... ||

|| ....... 2 ....... | ..rock .. ||

|| ....... 3 ....... | ..jazz ... ||

|| ....... 4 ....... | .classic ||。

2和表之間的關係:

song.id_genre FK到genre.id_genre

我有這樣一個變量:

$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中顯示結果?

+0

你得到了什麼錯誤? – 2013-05-14 07:41:59

+6

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – 2013-05-14 07:51:07

+0

對於第二個問題,嚴重rtfm。 – 2013-05-14 11:48:53

回答

-2

JOIN查詢是錯誤的,你使用INNER JOINFROM

試試這個:

$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='%$search_genre%' ORDER BY id_song"); 

如果查詢搜索,您可以使用wildcards%

例如

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='%$search_genre%' ORDER BY id_song"); 
+0

你能告訴我爲什麼倒票嗎? – Lian 2013-05-14 08:04:50

+0

您可以查看[此評論](http://stackoverflow.com/questions/16537583/show-the-data-with-mysql-query-php#comment23751924_16537724)爲什麼。 – 2013-05-14 08:12:15

-2
$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"); 

    use this.it will work. 

if(mysql_num_rows($query) > 0){ 
    while($row = mysql_fetch_array($query)){ 
    echo $row['id_song'];//song id 
    echo $row['song_title'];//song title 
    echo $row['genre'];//song genre 
    } 
} 
+0

我很抱歉,我忘了問第二個問題,如何在PHP中顯示結果?謝謝你的幫助。 – bob 2013-05-14 07:54:17

6

第一!

Please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated。 請參閱red box?瞭解prepared statements代替,並用 PDOMySQLi - this article將幫助您決定哪。如果您選擇 PDO,here is a good tutorial

二!

如果你已經開始使用mysql_*至少逃脫你的參數!否則,你會留下一個嚴重的SQL注入安全漏洞,等待下一個l33t wannabe黑客入侵你的站點!

$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"); 

但請務必閱讀上面的框中的鏈接。

你有這個錯誤的原因是因爲語法錯誤。

+0

你能幫助我,如何在php中顯示結果?謝謝。 – bob 2013-05-14 08:17:46