admin

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

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’ 附近使用。

我无法指出错误的根本原因,因为一切看起来都还可以。

请帮忙。

提前致谢。


阅读 121

收藏
2021-06-07

共1个答案

admin

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您可以摆脱在值周围使用单引号的麻烦。

2021-06-07