Скажем, у меня есть 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 в синтаксисе SELECT
:
Для совместимости с PostgreSQL MySQL также поддерживает синтаксис смещения offset_count OFFSET LIMIT.
Этот вопрос старен, но я просто хочу добавить код, который не является жестко запрограммированным, хаос ответа дал средства, которые вам придется жестко кодировать ваши скрипты (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); // eg 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;
и продолжайте до тех чисел, которые вы хотите.