我有一个拥有超过5,000条记录的数据库,我想获取50行,然后在用户点击下一个时获取下一个50,而当用户点击上一个时则相反。
表名:事件
我的审判是
select * from events where entred_by = '$id' limit $limit, 50
但问题是我无法计算下一行和前一行。
修改
$start = '0';
$PAGE_P = $_GET['p'];
$PAGE_N = $_GET['n'];
if(!numeric($PAGE_N)){
$PAGE_N = 50;
$PAGE_P = 0;
$start = '0';
}else{
if(isset($_GET['n'])){
$PAGE_N = $PAGE_N + 50;
$PAGE_P = $PAGE_N - 50;
$start = $PAGE_N;
}else{
$PAGE_N = $PAGE_P + 50;
$PAGE_P = $PAGE_N - 50;
$start = $PAGE_P;
}
}
$this->query = SQL::get("
SELECT * FROM event
INNER JOIN user
ON user.user_id = event.entered_by
ORDER BY event_id ASC LIMIT $start,50
");
我进行了编辑,编辑后我可以使用下一个按钮,但是当我按下之前它会回到第1行。
答案 0 :(得分:0)
SELECT * FROM events WHERE entred_by = '$id' ORDER BY id LIMIT $start, $limit
设置$ start值(行号开始)和$ limit(50)。
您需要使用LIMIT关键字,也可能使用ORDER BY。
更新编辑:
好的,忽略验证,它应该是这样的:
$this->query = SQL::get("
SELECT * FROM event
INNER JOIN user
ON user.user_id = event.entered_by
ORDER BY event_id ASC
LIMIT $start_row, $number_of_rows
");