【PHP】mysql存储过程实现分页的示例
一个存储过程是一个可编程的函数,当希望在不同的应用程序或者平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的!
以下是详细代码:
meta charset=’utf-8′
php
$host=”localhost”;
$user=”root”;
$pwd=”root”;
$dbname=”test”;
$link = mysql_connect($host, $user, $pwd)or die(“Could not connect ” . mysql_error());
mysql_select_db($dbname, $link) or die (‘Can’t use test ‘ . mysql_error());
mysql_query(“SET NAMES ‘utf8′”);
mysql_query(“SET CHARACTER_SET_CLIENT=utf8″);
mysql_query(“SET CHARACTER_SET_RESULTS=utf8″);
检查存储过程是否已经存在
$procedure_check=”SHOW CREATE PROCEDURE total_users”;
$is_exist=mysql_query($procedure_check);
$procedure_check2=”SHOW CREATE PROCEDURE page_users”;
$is_exist2=mysql_query($procedure_check2);
if(!$is_exist){
由于存储过程执行一次后,只要没有drop掉就始终存在,所以对于
查询总量的存储过程来说只需要声明一次就可以,如果已经存在就不重复声明
声明检索总用户数的存储过程
$sql_total=”
#Basic Stored Procedure example
create procedure total_users(out total int(10))
BEGIN
select count() INTO total from user;
END
“;
mysql_query($sql_total);
}
调用存储过程
mysql_query(“call total_users(@total_num);”);
$total_res=mysql_query(“select @total_num”);
获取用户总数
$total_num=mysql_fetch_array($total_res);
获取当前页
$page=$_REQUEST['page']$_REQUEST['page']1;
设置每页显示多好条记录
$page_size=2;
设置limit偏量
$off=($page-1)$page_size;
计算页面总数,注意键名,当然你也可以使用数字下标
$page_num=ceil($total_num['@total_num']$page_size);
if(!$is_exist2){
同上,只需要声明一次
检索分页用户数的存储过程,这里传入2个参数,都是整型
$sql_page=”
#Basic Stored Procedure example
create procedure page_users(in off int(10),in page_size int(10))
BEGIN
select from user limit off,page_size;
END
“;
建立存储过程
$is_procedure=mysql_query($sql_page);
}
调用分页存储过程,传递参数
$res=mysql_query(“call page_users($off,$page_size)”);
while ($arr=mysql_fetch_array($res,MYSQL_ASSOC)){
echo ‘id’.$arr['id'].’br’;
echo ‘user’.$arr['user'];
echo ‘hr’;
}
显示分页
for($i=1;$i=$page_num;$i++){
echo ‘a href=”page=’.$i.’”['.$i.']a’;
}
———–复制下面的sql语句到phpmyadmin执行以生成测试数据———-
– phpMyAdmin SQL Dump
– version 3.3.9.2
– httpwww.phpmyadmin.net
–
– 主机 localhost
– 生成日期 2002 年 01 月 01 日 0457
– 服务器版本 5.5.9
– PHP 版本 5.3.5
SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;
!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT ;
!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS ;
!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION ;
!40101 SET NAMES utf8 ;
–
– 数据库 `test`
–
– ——————————————————–
–
– 表的结构 `user`
–
CREATE TABLE IF NOT EXISTS `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(6) NOT NULL,
`pwd` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
–
– 转存表中的数据 `user`
–
INSERT INTO `user` (`id`, `user`, `pwd`) VALUES
(11, ‘测试2′, ‘测试2′),
(12, ‘测试1′, ‘测试1′),
(13, ‘测试3′, ‘测试3′),
(15, ‘测试4′, ‘测试4′),
(16, ‘测试5′, ‘测试5′),
(17, ’222′, ’111′),
(18, ’222a’, ’111a’);
——————————————————–
本文档为【【PHP】mysql存储过程实现分页的示例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。