在mysql-php中获取语法错误。您的SQL语法有错误;

时间:2013-01-18 08:43:15

标签: php mysql sql

我正在使用表user_like来保存用户的点击次数。

表结构如下。

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行'like = 0'附近。

我无法指出错误的根本原因是看起来是否正常。

请帮忙。

提前致谢。

2 个答案:

答案 0 :(得分: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

其他来源

如果您有时间更改它,请不要使用保留关键字列表中的tablename或columnname。它会给你带来如此痛苦的未来。

作为旁注,如果值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

答案 1 :(得分:1)

LIKE是保留关键字。不要在此之后命名你的colums。

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html