我想每次增加3的偏移量,所以我使用了一个每次单击按钮(使用ajax)增加3的变量。SQL OFFSET语法错误
但是,当使用OFFSET
时,我总是收到语法错误。
这是正确的方法吗?
$web = "SELECT * FROM `db` WHERE catid = 9 AND state = 1 ORDER BY ordering LIMIT 0,".$_POST['limit']." OFFSET ".$_POST['limit']."";
限制每按一下按钮增加了3,如果我离开了OFFSET
,它的工作原理,但它一直再次加载,而不是仅仅3个新项目的所有项目。
我的错误:
There was an error running the query [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OFFSET 3' at line 1]
除了戈登的答案;你在这里打开SQL注入。 –
像@ Fred-ii-说的,[Little Bobby](http://bobby-tables.com/)说*** [你的脚本有SQL注入攻击的危险。](http://stackoverflow.com/问题/ 60174 /何灿I-防止-SQL注入式-PHP)***。即使[转义字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –
优先考虑预防SQL入侵的语句。或者将$ _POST ['limit']显式转换为PHP中的整数并将其插入到字符串中。这与引用字符串类似,但是对于数字。无论如何,我总是提出准备好的语句作为最佳解决方案,因为它对任何数据类型都是一样的。 – cdonat