+ -
当前位置:首页 → 问答吧 → mysql 分页

mysql 分页

时间:2011-04-12

来源:互联网

<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″);

//检查存储过程是否已经存在,当然也可以用session来记录一个存在标识,这里我也没那么写了
$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
http://www.phpmyadmin.net

– 主机: localhost
– 生成日期: 2002 年 01 月 01 日 04:57
– 服务器版本: 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’);


作者: mengll   发布时间: 2011-04-12

以前学过存储过程,太久没用,全忘了...先复习一下...

作者: 卖身葬小强   发布时间: 2011-04-12

热门下载

更多