奇怪的PHP语法错误

时间:2011-04-26 19:23:24

标签: php mysql sql

我收到错误您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行“密钥LIKE%dogs%ORDER BY rating DESC”附近使用正确的语法

 $query = mysql_query("SELECT * FROM listings WHERE keys LIKE %$q% ORDER BY rating DESC") or die(mysql_error());

我搜索了“狗”,取代了“q”搜索变量。添加ORDER BY评级DESC时出现此语法错误。我有相同的代码行,减去过去的代码,它工作正常。我尝试在'listing''key'和'rating'周围添加单引号,但它仍然无效。

我确信这是一个简单的解决方案,我只是缺少。

由于

3 个答案:

答案 0 :(得分:9)

这不是php错误。应该引用LIKE之后的字符串。

答案 1 :(得分:2)

只是一个小评论,但与问题有关:避免使用经典的MySQL扩展。使用MySQL改进版本,或者最好是PDO。

http://php.net/manual/en/book.pdo.php

http://php.net/manual/en/book.mysqli.php

不仅更安全,您还可以使用MySQL 5等功能,例如预备语句。

答案 2 :(得分:2)

“keys”可能是保留关键字。用反引号围绕它。

另外,就像@OZ_所说的那样,LIKE之后的字符串必须用单引号括起来。并转义$q以避免SQL注入。

$query = mysql_query("SELECT * FROM listings WHERE `keys` LIKE '%" . mysql_real_escape_string($q) . "%' ORDER BY rating DESC") or die(mysql_error());