我有以下PHP代码:
$page = $_POST["page"];
$pageSize = $_POST["pageSize"];
$toRecord = $page * $pageSize;
$fromRecord = $toRecord - $pageSize;
$query = "SELECT * FROM table LIMIT $fromRecord, $toRecord";
现在,在10个总表记录中,如果我的$pageSize
是' 3',则第一页返回3条记录,第2条记录,第3条记录和最后一条记录一个1记录。我在SQL方面的经验有限,我做错了什么?
答案 0 :(得分:4)
LIMIT参数是offset, row_count
。所以你不应该使用$toRecord
,而应该使用$pageSize
- 并且不要忘记逃避它。事实上,我稍微改写了这个逻辑:
define('DEFAULT_PAGE_NO', 1);
define('DEFAULT_PAGE_SIZE', 10);
if (isset($_POST['page']) {
$pageNo = max(DEFAULT_PAGE_NO, (int)$_POST['page']);
}
else {
$pageNo = DEFAULT_PAGE_NO;
}
if (isset($_POST['pageSize']) {
$pageSize = (int)$_POST['pageSize'];
if ($pageSize <= 0) {
$pageSize = DEFAULT_PAGE_SIZE;
}
}
else {
$pageSize = DEFAULT_PAGE_SIZE;
}
$offset = ($pageNo - 1) * $pageSize;
$query = "SELECT * FROM table LIMIT $offset, $pageSize";