2014-04-22 113 views
0

我得到一個錯誤,當其他同一頁工作正常,但另一個給相同的查詢代碼錯誤。Mysql查詢奇怪的錯誤

這是我的代碼這是什麼問題?

$ttt = mysql_query("SELECT * FROM like WHERE (user_id='$user_id' AND sound_id='$sound_id')",$link) or die(mysql_error()); 

錯誤

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「等,其中(USER_ID =」「AND sound_id =‘’)」在1號線

+0

有什麼錯誤? –

+2

'LIKE'是保留字。用反引號把它包起來。 –

+0

我已經嘗試了所有相同的代碼在其他頁面上工作... – user3556627

回答

1
like 

是保留字,不能作爲你嘗試使用的表格名稱。可以嘗試將其設置爲反引號或重命名該表。

+0

+1因爲你確實回答了第一個答案,作爲「答案」;-)乾杯 –

1

喜歡的是MySQL中的保留關鍵字使用反引號吧

`like` 
LIKE的

https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

使用

select * from table where username like '%aaa'; 
select * from table where username like '%aaa%'; 
select * from table where username like 'aaa%'; 

+0

小問題:第一個例子沒有意義,因爲它和WHERE用戶名='aaa''相同 –

+0

是的,它是相同的as =但我經常看到很多人使用它,但老實說我不喜歡這種類型的粉絲,即使用像而不是= –

+0

因此我的評論。你可以改變它更有意義的東西,比如'WHERE username LIKE'%foo''。 –

0

作爲一項規則,你不應該使用保留字,但如果你必須,併爲了這個問題的目的,把括號括起來呃。

$ttt = mysql_query 
("SELECT * 
FROM [like] 
WHERE (user_id='$user_id' AND sound_id='$sound_id')",$link) or die(mysql_error()); 
0

Like是保留字。最好是改變你的table name或者像這樣用back tick包圍like

試試這個。

$ttt = mysql_query("SELECT * FROM like_table WHERE user_id=$user_id AND sound_id=$sound_id",$link) or die(mysql_error()); 
3

like是一個SQL reserved word,你應該使用 「喜歡」 裏面反引號``

$ttt = mysql_query("SELECT * FROM `like` WHERE (user_id='$user_id' AND sound_id='$sound_id')",$link) or die(mysql_error());