首页 后端开发 php教程 php mysql分页处理的探讨_PHP

php mysql分页处理的探讨_PHP

Jun 01, 2016 pm 12:40 PM
echo id ord 处理 探讨 记录 起始

php mysql分页处理的探讨
常见的分页处理流程为:
1、用select count(*) from tbl_name取得待分页的总记录数
2、根据每页的记录数计算出总页数:总页数 = ceil(总记录数/每页记录数)
3、根据当前页号计算出起始位置:起始位置 = (当前页号-1)*每页记录数
4、用select * from tbl_name limit 起始位置,每页记录数 取得待显示记录
5、列表输出相关信息

在这个流程中,数据库需要两次遍历表才能得到所需数据。尽管limit会在得到指定记录数后会终止遍历,但前面直到“起始位置”的检索是浪费掉的。

这里提出一种新算法与大家讨论:
1、利用mysql的用户变量,分割并提取每页起始的id号。
2、查询结果的记录数即为总页数
3、根据当前页号取得当前页的起始id
4、用select * from tbl_name where id>=起始id limit 每页记录数 取得待显示记录
5、列表输出相关信息

可以看到,在后一次查询中。由于利用了id作为主键的特征,数据库可直接定位到所需记录。从而减少了查询时间。
这个查询算法有一个副产品:可以产生一条用于衔接上下页的重复记录,也就是各页间有一条重叠的记录。当然,去掉他也是很容易的。
以下是测试代码:
include "mysql_result_all.inc"; // 用于显示查询结果的工作函数

$pagesize = 9; // 每页行数
$type = 1; // =1降序排列
$mode = 0; // =1不重复上页最后一条记录

$conn = mysql_connect(); // 连接mysql
mysql_select_db("site"); // 选择数据库

// 准备动态修改查询串
if($type) {
$order = "desc";
$expr = "}else {
$order = "";
$expr = ">=";
}
if($mode) $pagesize ;

mysql_query("set @v:=-1"); // 定义mysql用户变量
$rs = mysql_query("select @v:=(@v 1) as xh, id from data HAVING mod(xh,$pagesize)=0 order by id $order");
mysql_result_all($rs); // 检查各页分布

echo $pages = mysql_num_rows($rs); // 取得总页数
if($mode) $pagesize--;

// 测试分页结果,$i表示显示页
for($i=0;$i mysql_data_seek($rs,$i); // 移动结果集指针
list($xh,$id) = mysql_fetch_row($rs); // 取得起始id
echo "
[$i] $xh -- $id";
$rs1 = mysql_query("select * from data where id$expr$id order by id $order limit $pagesize");
mysql_result_all($rs1); // 显示相关结果
}
?>

mysql_result_all.inc
这个函数我贴过多次了,对调试程序非常有用的。

function mysql_result_all($result,$format="") {
echo "

";
";
for($i=0;$i echo "";
}
echo "";
while($row = mysql_fetch_row($result)) {
echo "";
for($i=0;$i echo "";
}
echo "";
}
echo "
".mysql_field_name($result,$i)."
".$row[$i]."
for($i=0;$i echo "".mysql_field_name($result,$i)."";
}
echo "";
while($row = mysql_fetch_row($result)) { echo ""; for($i=0;$i echo "".$row[$i].""; } echo ""; } echo " ";}?>
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

此 Apple ID 尚未在 iTunes Store 中使用:修复 此 Apple ID 尚未在 iTunes Store 中使用:修复 Jun 10, 2024 pm 05:42 PM

使用AppleID登录iTunesStore时,可能会在屏幕上抛出此错误提示“此AppleID尚未在iTunesStore中使用”。没有什么可担心的错误提示,您可以按照这些解决方案集进行修复。修复1–更改送货地址此提示出现在iTunesStore中的主要原因是您的AppleID个人资料中没有正确的地址。步骤1–首先,打开iPhone上的iPhone设置。步骤2–AppleID应位于所有其他设置的顶部。所以,打开它。步骤3–在那里,打开“付款和运输”选项。步骤4–使用面容ID验证您的访问权限。步骤

修复事件ID 55,50,98,140磁盘错误在事件查看器 修复事件ID 55,50,98,140磁盘错误在事件查看器 Mar 19, 2024 am 09:43 AM

若您在Windows11/10的事件查看器中发现事件ID55、50、140或98,或遇到磁盘文件系统结构损坏且无法使用的错误,请按照以下指南解决此问题。什么是事件55,磁盘上的文件系统结构损坏和不可用的意思?第55届会议,Ntfs磁盘上的文件系统结构损坏且无法使用。请在卷上运行chkMSK实用程序当NTFS无法将数据写入事务日志时,会触发事件ID55的错误,这将导致NTFS无法完成无法写入事务数据的操作。这种错误通常发生在文件系统损坏的情况下,可能是由于磁盘上存在坏扇区或文件系统对磁盘子系统的不

拼多多买过的东西在哪里查看记录 查看买过的商品记录的方法 拼多多买过的东西在哪里查看记录 查看买过的商品记录的方法 Mar 12, 2024 pm 07:20 PM

  拼多多软件内提供的商品好物非常多,随时随地想买就买,而且每一件商品质量都是严格把关的,件件商品都是正品,不同还有非常多优惠的购物折扣,让大家网购根本停不下来。输入手机号在线登录,在线添加多个收货地址和联系方式,可以随时查看最新的物流动态,不同品类的商品板块都是开放的,搜索上下滑动选购下单,足不出户轻松体验便捷的网购服务,还能查看所有的购买记录,包括自己买过的商品,数十个购物红包、优惠券免费领取使用,现在小编在线详细为拼多多用户们带来查看买过的商品记录的方法。  1.打开手机,点击拼多多图标,

WIN10服务主机太占cpu的处理操作过程 WIN10服务主机太占cpu的处理操作过程 Mar 27, 2024 pm 02:41 PM

1、首先我们右击任务栏空白处,选择【任务管理器】选项,或者右击开始徽标,然后再选择【任务管理器】选项。2、在打开的任务管理器界面,我们点击最右端的【服务】选项卡。3、在打开的【服务】选项卡,点击下方的【打开服务】选项。4、在打开的【服务】窗口,右击【InternetConnectionSharing(ICS)】服务,然后选择【属性】选项。5、在打开的属性窗口,将【打开方式】修改为【禁用】,点击【应用】后点击【确定】。6、点击开始徽标,然后点击关机按钮,选择【重启】,完成电脑重启就行了。

阿里巴巴id在哪里看 阿里巴巴id在哪里看 Mar 08, 2024 pm 09:49 PM

在阿里巴巴软件中,一旦您成功注册一个账号,系统就会为您分配一个独特的ID,这个ID将作为您在平台上的身份标识。但是对于许多用户来说,他们会想要查询自己的ID,但是却不知道该如何操作。那么本站小编带来下文中,就将为大家带来详细的攻略步骤介绍,希望能帮助到大家!阿里巴巴id在哪里看答案:【阿里巴巴】-【我的】。1、首先打开阿里巴巴软件,进入到首页中后我们需要点击右下角的【我的】;2、然后来到我的页面中后我们在页面的上方就可以看到【id】了;阿里巴巴id和淘宝一样吗阿里巴巴id和淘宝id不一样,但是二

腾讯视频id在哪里查看 腾讯视频id在哪里查看 Feb 24, 2024 pm 06:25 PM

腾讯视频id在哪里查看?腾讯视频APP中是有专属的id,但是多数的用户不知道如何查看腾讯视频id,接下来就是小编为用户带来的腾讯视频id查看方法图文教程,感兴趣的用户快来一起看看吧!腾讯视频使用教程腾讯视频id在哪里查看1、首先打开腾讯视频APP,主页面右下角【个人中心】进入到专区;2、之后进入到个人中心页面,选择【设置】功能;3、然后在设置页面,点击最下方【退出账号】;4、最后在下图所示的页面即可查看到专属的id号。

学习PHP中如何处理特殊字符转换单引号 学习PHP中如何处理特殊字符转换单引号 Mar 27, 2024 pm 12:39 PM

在PHP开发过程中,处理特殊字符是一个常见的问题,尤其是在字符串处理中经常会遇到特殊字符转义的情况。其中,将特殊字符转换单引号是一个比较常见的需求,因为在PHP中,单引号是一种常用的字符串包裹方式。在本文中,我们将介绍如何在PHP中处理特殊字符转换单引号,并提供具体的代码示例。在PHP中,特殊字符包括但不限于单引号(')、双引号(")、反斜杠()等。在字符串

Go语言开发必备:5个热门框架推荐 Go语言开发必备:5个热门框架推荐 Mar 24, 2024 pm 01:15 PM

《Go语言开发必备:5个热门框架推荐》Go语言作为一门快速、高效的编程语言,受到越来越多开发者的青睐。为了提高开发效率,优化代码结构,很多开发者选择使用框架来快速搭建应用。在Go语言的世界中,有许多优秀的框架可供选择。本文将介绍5个热门的Go语言框架,并提供具体的代码示例,帮助读者更好地理解和使用这些框架。1.GinGin是一个轻量级的Web框架,拥有快速

See all articles