2016-08-04 2 views
-2

Я пытаюсь увеличить смещение каждый раз на 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]

+2

кроме ответа Гордона; вы здесь открыты для SQL-инъекции. –

+2

Как @ Фред-ии говорит, [Маленький Бобби] ​​(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) небезопасно! –

+0

Предпочитайте подготовленные операторы для предотвращения вторжений SQL. В качестве альтернативы явно конвертировать $ _POST ['limit'] в целое число в PHP и вставлять его в строку. Это похоже на цитирование для строк, но для чисел. Во всяком случае, я всегда предлагал готовые заявления как лучшее решение, так как он работает одинаково для всех типов данных. – cdonat

ответ

3

Синтаксис должен быть:

LIMIT ".$_POST['limit']." OFFSET ".$_POST['limit'].""; 

В 0 конфликты с OFFSET.

+0

Отлично, что работает. Я принимаю ваш ответ за 9 минут – twan

0

Вы считаете, что используете как предел x, x, так и смещение X в том же запросе.

Попробуйте удалить смещенную часть и просто использовать предел X, x.

+0

Вы можете использовать оба запроса. Фактически смещение может использоваться только тогда, когда предел находится внутри запроса. – twan

Смежные вопросы