2013-01-18 49 views
2

我使用表user_like來保存用戶喜歡的點擊。在mysql-php中獲取語法錯誤。你的SQL語法有錯誤;

表結構如下。

id user_id  song_id  like 
-------------------------------- 
67 2   148   0 

所有列的數據類型爲int(11).

$song_id=$_GET['song_id']; 
$query="select * from atr_like WHERE song_id = '$song_id' and like = 0"; 
$rs = mysql_query($query) or 
die(mysql_error()); 
echo mysql_num_rows($rs); 

我收到以下錯誤。

您的SQL語法錯誤;檢查手冊中 對應於你的MySQL服務器版本正確的語法在1號線

使用 附近「像= 0」我不能指出錯誤的根本原因是它看起來everthing是好的。

請幫忙。

在此先感謝。

回答

10

LIKE是保留關鍵字。你可以用倒退來逃避它。

SELECT * 
FROM atr_like 
WHERE song_id = '$song_id' and 
     `like` = 0 

另一種方法是在桌子上提供的別名,例如

SELECT a.* 
FROM atr_like a 
WHERE a.song_id = '$song_id' and 
     a.like = 0 

OTHER源極(S)

如果您有時間更改它,請不要使用保留關鍵字列表上的表名或列名。它會給你未來的痛苦。

作爲旁註,如果數值(s)來自外部,則該查詢容易受到影響,其格式爲SQL Injection。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+0

感謝花費寶貴的時間,它的工作原理... –

+0

我認爲這是一個更好的答案 –

+0

@JW你的答案是best..I不知道,我不能在同一時間同時接受的答案... –