我正在使用表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'附近。
我无法指出错误的根本原因是看起来是否正常。
请帮忙。
提前致谢。
答案 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