2014-04-22 108 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());