我有一個MySQL查詢PHP和MySQL分頁
SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp'`
我想分頁每頁10個結果。我該怎麼做?
我有一個MySQL查詢PHP和MySQL分頁
SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp'`
我想分頁每頁10個結果。我該怎麼做?
這裏是一個很好的起點:
<?php
// insert your mysql connection code here
$perPage = 10;
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$startAt = $perPage * ($page - 1);
$query = "SELECT COUNT(*) as total FROM redirect
WHERE user_id = '".$_SESSION['user_id']."'";
$r = mysql_fetch_assoc(mysql_query($query));
$totalPages = ceil($r['total']/$perPage);
$links = "";
for ($i = 1; $i <= $totalPages; $i++) {
$links .= ($i != $page)
? "<a href='index.php?page=$i'>Page $i</a> "
: "$page ";
}
$r = mysql_query($query);
$query = "SELECT * FROM 'redirect'
WHERE 'user_id'= \''.$_SESSION['user_id'].' \'
ORDER BY 'timestamp' LIMIT $startAt, $perPage";
$r = mysql_query($query);
// display results here the way you want
echo $links; // show links to other pages
使用查詢的LIMIT clausule來限制從數據庫中檢索到的結果數量。
你可以把一個例子PHP代碼,好嗎? – Francesc 2010-04-11 10:25:48
谷歌是你的朋友: http://www.phpeasystep.com/phptu/29.html – 2010-04-11 10:27:09
使用LIMIT。
SELECT *
FROM redirect
WHERE user_id = '35251'
ORDER BY timestamp
LIMIT 40, 10
40是有多少記錄要跳過,10是多少顯示。
你的PHP也有一些問題。您使用反引號(而不是單引號)來圍繞表名和列名。你不應該使用字符串連接來建立你的查詢。
如果數據已知是安全的,使用字符串連接來建立一個SQL查詢沒有任何內在錯誤。 – 2010-04-11 10:44:35
@code_burgar:它不會給出錯誤的結果,但會爲每個新的參數集創建一個新的查詢計劃。你應該使用綁定參數。 – 2010-04-11 13:22:03
但是,我如何創建指向其他頁面的鏈接? – Francesc 2010-04-11 10:47:36
爲所有與您的where子句匹配的結果選擇COUNT,將您獲得的perPage值除以獲得的總頁數,然後執行for循環來回顯鏈接到每個頁面。 – 2010-04-11 10:51:29
但是對於前一個?你能舉個例子嗎?我是一個newvie.Thanks – Francesc 2010-04-11 10:54:53