Я пытаюсь увеличить смещение каждый раз на 3, поэтому я использовал переменную, которая увеличивается на 3 при каждом нажатии кнопки (с использованием ajax).Синтаксическая ошибка 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-инъекции. –
Как @ Фред-ии говорит, [Маленький Бобби] (http://bobby-tables.com/) говорит, что *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/ вопросы/60174/как-кан-я-предотвращать-SQL-инъекции-в-PHP) ***. Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! –
Предпочитайте подготовленные операторы для предотвращения вторжений SQL. В качестве альтернативы явно конвертировать $ _POST ['limit'] в целое число в PHP и вставлять его в строку. Это похоже на цитирование для строк, но для чисел. Во всяком случае, я всегда предлагал готовые заявления как лучшее решение, так как он работает одинаково для всех типов данных. – cdonat