1064:你的SQL语法中有一个错误''附近

时间:2014-07-09 21:22:55

标签: mysql sql

  

1064:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第4行的''附近使用正确的语法。选择a。* FROM ws_items a WHERE 1 AND enabled = 1 AND {{ 1}} = 1 ORDER BY visible DESC LIMIT 0,

我搜索了网站,但没有一个符合我的查询。我不知道如何使用mysql,但我真的需要解决这个问题...  也许这里有人知道解决方案

created

2 个答案:

答案 0 :(得分:0)

如果您有一种安全的方法来创建阻止SQL注入的$filter,那么请尝试将其更改为:

$sql = "SELECT a.* FROM 
       `".DB_PREFIX."items` a WHERE 1=1 $filter 
       ORDER BY `created` DESC 
       LIMIT ".($_SESSION['itemsPerPage']*($page-1)).",".($_SESSION['itemsPerPage']+0);

如果您的查询以LIMIT 0结尾,那么它将不会返回任何行,如果它以LIMIT 0,结束,那么它在语法上确实不正确。

您需要确保您有偏移值。

我已经调整了查询​​以向偏移量添加零,因此它现在应该以{{1​​}}结束,但要注意这不会返回任何行。我猜你的会话变量没有值。

为什么不按照@VMai的建议尝试LIMIT 0,0

编辑:我敢打赌,var_dump($_SESSION['itemsPerPage']);是在您第一次引用后设置的。因此,当您第一次加载页面时,它会失败,然后当您刷新时,该值就存在并且可以正常工作。

答案 1 :(得分:0)

我认为正在发生的是

$_SESSION['itemsPerPage']

为空,当乘以$page - 1时,它被转换为0,因此它在查询中评估为0,但是当在末尾连接时,只会产生任何导致语法错误的内容。 LIMIT条款:

DESC LIMIT 0,
相关问题