У меня проблема с привязкой значений к запросу MySQL в php.
$this->conn->prepare("SELECT * FROM tablename LIMIT ? , ? ");
$pageStart = 11;
$pageEnd = 20 ;
$stmt->bind_param("ii" , $pageStart , $pageEnd );
$stmt->execute();
Это возвращает 20 строк. Любая помощь?
Это правильное поведение.
От документация:
...
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
...
число после запятой — это число строк.
Если вы хотите 10 записей, просто скажите это:
SELECT * FROM tablename LIMIT 11 , 10;
Запрос выполняется правильно. Ваши параметры имеют неверные значения в соответствии с ожидаемым результатом.
Если вы хотите записи из 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
$pageStart = 11;
Означает результат начала для 11 и $pageEnd = 20 ;
значит 20 результат после 11
Таким образом, вы получите 20 результат сейчас.
Для получения результата до 10 нужно установить $pageEnd = 10.
Это вернет вас result 11 to 21
Что касается имен ваших переменных, вы должны изменить
$stmt->bind_param("ii" , $pageStart , $pageEnd );
в
$stmt->bind_param("ii" , $pageStart , $pageEnd - $pageStart + 1);
потому что второй параметр LIMIT
количество выбранных строк Первый параметр — это смещение.