假设我在MySQL表中有50行。我想选择前十(LIMIT 10
),但是我希望能够选择不同页面上的下10个。如何从给定的行号开始选择MySQL中的行?
那么,如何开始我的选择,排10后?
更新查询:
mysql_query("
SELECT * FROM `picdb`
WHERE `username` = '$username'
ORDER BY `picid` DESC
LIMIT '$start','$count'
")
假设我在MySQL表中有50行。我想选择前十(LIMIT 10
),但是我希望能够选择不同页面上的下10个。如何从给定的行号开始选择MySQL中的行?
那么,如何开始我的选择,排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 on SELECT
syntax:
对于兼容PostgreSQL, MySQL也支持LIMIT ROW_COUNT OFFSET偏移语法。
这个问题是旧的,但我只是想补充一点,没有硬编码代码,得到的答案混乱给了意味着你必须硬编码脚本(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;
,继续,直到你想要的数字。
欢迎计算器!这是一个相当古老,流量很大的问题,你的答案是否增加了其他方面的东西,已经确定的答案不是?一般来说,如果您可以编辑现有的已接受的答案以反映任何必要的更改而不是整个新答案,则会更好,因为大多数用户不会滚动到底部(答案将显示在答案中),答案将会是。 – zack6849 2017-04-11 11:25:00
尝试 的mysql_query( “SELECT * FROM'picdb' WHERE'username' = '$用户名' ORDER BY'picid' DESC LIMIT $开始,$数”) – Rufinus 2009-08-10 00:32:47
重新编辑,你应该把你的错误反馈设置直到它会告诉你你的SQL有什么问题。你会发现你有一个语法错误,因为你的'LIMIT'子句在'ORDER BY'子句之前。 – chaos 2009-08-10 00:32:51
谢谢你们,现在工作正常。 – mrpatg 2009-08-10 00:41:15