毎回オフセットを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']."";
制限は、私がOFFSET
を残す場合は、すべてのボタンのクリック3により増加し、それは動作しますが、それはだけではなく、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/how-can-i-prevent-sql-injection-in-php)***。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –
SQLインセクション防止のプリペアドステートメントを推奨します。あるいは、$ _POST ['limit']をPHPの整数に明示的に変換し、それを文字列に挿入します。これは文字列の引用に似ていますが、数字の場合と同じです。とにかく、私はいつもすべてのデータ型で同じように動作するので、最良の解決策として準備文を提案します。 – cdonat