我正在使用表格user_like来保存用户喜欢的点击。
user_like
表结构如下。
id user_id song_id like -------------------------------- 67 2 148 0
所有列的数据类型为 int(11).
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’ 附近使用。
我无法指出错误的根本原因,因为一切看起来都还可以。
请帮忙。
提前致谢。
LIKE是保留关键字。您可以使用反引号将其转义。
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
其他来源
如果您有时间进行更改,请不要使用保留关键字列表中的表名或列名。将来会给您带来如此巨大的痛苦。
作为一个旁注,查询是脆弱的SQL Injection,如果值( s ^ )从外面走了进来。请查看下面的文章,以了解如何防止这种情况的发生。通过使用,PreparedStatements您可以摆脱在值周围使用单引号的麻烦。
SQL Injection
PreparedStatements