Ответ 1
Я рекомендую работать, получив первую страницу, используя:
LIMIT 0, 10
то для второй страницы
LIMIT 10, 10
затем
LIMIT 20, 10
для третьей страницы и т.д.
Скажем, у меня есть 50 строк в таблице MySQL. Я хочу выбрать первую десятку (LIMIT 10
), но затем я хочу, чтобы выбрать следующие 10 на другой странице.
Итак, как мне начать мой выбор после строки 10?
Обновленный запрос:
mysql_query("
SELECT * FROM `picdb`
WHERE `username` = '$username'
ORDER BY `picid` DESC
LIMIT '$start','$count'
")
Я рекомендую работать, получив первую страницу, используя:
LIMIT 0, 10
то для второй страницы
LIMIT 10, 10
затем
LIMIT 20, 10
для третьей страницы и т.д.
LIMIT 10
LIMIT 10 OFFSET 10
Из MySQL 5.1 docs в синтаксисе SELECT
:
Для совместимости с PostgreSQL, MySQL также поддерживает LIMIT Синтаксис смещения row_count OFFSET.
Этот вопрос старый, но я просто хочу добавить код, который не является жестко запрограммированным, хаос, предоставленный для ответа, означает, что вам придется жестко кодировать свои скрипты (Select statement). вы можете добиться тех же результатов, получив имя файла, а затем выберите данные из базы данных на основе текущей страницы, без жесткого кодирования вашего оператора select. сначала получите текущую страницу
$page = basename($_SERVER['SCRIPT_FILENAME']);
$page_counter = rtrim($page, ".php");
//setting your limit
$start = 0;
$limit = 10;
//if current page is not index.php then $start = ($limit * page_counter);
// e.g if current page is 1.php then $start = ($limit * 1) = 10
//if current page is 2.php then $start = ($limit * 2) = 20
if ($page !== 'index.php') {
$start = ($limit * $page_counter);
}
//getting row count
$ROW_COUNT = $db->query('SELECT * from tableName')->rowCount();
//getting number of rows left in the table
$rows_left = ("SELECT * FROM tableName limit ?,?");
$rows_left = $db->prepare($rows_left);
$rows_left->execute(array($start,$ROW_COUNT));
$rows = $rows_left->fetchAll(PDO::FETCH_ASSOC);
$number_rows = 0;
foreach ($rows as $r) {
$number_rows = $number_rows + 1;
}
//if number of rows left in the table is less than 10 then $limit = the number of rows left
if ($number_rows < 10) {
$limit = $number_rows;
}
//getting all rows
$getRows = "SELECT * FROM tableName limit ?,?";
$getRows = $db->prepare($getRows);
$getRows->execute(array($start , $limit));
$getRows = $getRows->fetchAll(PDO::FETCH_ASSOC);
select * from 'table_name'
ORDER BY 'column_id 'DESC
LIMIT 0,10;
select * from 'table_name'
ORDER BY 'column_id' DESC
LIMIT 10,10;
select * from 'table_name'
ORDER BY 'column_id' DESC
LIMIT 20,10;
и продолжайте до нужных цифр.