我想每次增加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