mysql — php bind_param для лимита

У меня проблема с привязкой значений к запросу MySQL в php.

$this->conn->prepare("SELECT * FROM tablename LIMIT ? , ? ");
$pageStart = 11;
$pageEnd = 20 ;
$stmt->bind_param("ii" , $pageStart , $pageEnd );
$stmt->execute();

Это возвращает 20 строк. Любая помощь?

0

Решение

Это правильное поведение.

От документация:

...
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
...

число после запятой — это число строк.

Если вы хотите 10 записей, просто скажите это:

SELECT * FROM tablename LIMIT 11 , 10;
3

Другие решения

Запрос выполняется правильно. Ваши параметры имеют неверные значения в соответствии с ожидаемым результатом.

Если вы хотите записи из 11-20 запрос должен быть:

SELECT * FROM tablename LIMIT 11 , 10

когда вы передаете 20 в качестве второго параметра, он возвращает 20 строк

Ты можешь использовать LIMIT offset, row_ count или же LIMIT row_count OFFSET offset

Смотрите документацию http://dev.mysql.com/doc/refman/5.0/en/select.html

2

$pageStart = 11; Означает результат начала для 11 и $pageEnd = 20 ; значит 20 результат после 11

Таким образом, вы получите 20 результат сейчас.

Для получения результата до 10 нужно установить $pageEnd = 10. Это вернет вас result 11 to 21

0

Что касается имен ваших переменных, вы должны изменить

$stmt->bind_param("ii" , $pageStart , $pageEnd );

в

$stmt->bind_param("ii" , $pageStart , $pageEnd - $pageStart + 1);

потому что второй параметр LIMIT количество выбранных строк Первый параметр — это смещение.

0
По вопросам рекламы [email protected]