MySql分页存储过程2

use guestbook;
delimiter $$
drop procedure if exists
prc_page_result $$
create procedure
prc_page_result (
in currpageint
,
in columnsvarchar(500
),
in tablenamevarchar(500
),
in sConditionvarchar(500
),
in order_fieldvarchar(100
),
in asc_fieldint
,
in primary_field varchar(100
),
in pagesizeint

)
begin
declare sTempvarchar(1000);
declare sSqlvarchar(4000
);
declare sOrder varchar(1000
);

if asc_field = 1 then

set sOrder = concat(' order by ', order_field, ' desc ');
set sTemp= '<(select min'
;
else

set sOrder = concat(' order by ', order_field, ' asc ');
set sTemp= '>(select max'
;
end if
;

if currpage = 1 then

if sCondition <> '' then
set sSql = concat('select ', columns, ' from ', tablename, ' where ');
set sSql = concat(sSql, sCondition, sOrder, ' limit ?'
);
else

set sSql = concat('select ', columns, ' from ', tablename, sOrder, ' limit ?');
end if
;
else

if sCondition <> '' then
set sSql = concat('select ', columns, ' from ', tablename);
set sSql = concat(sSql, ' where ', sCondition, ' and '
, primary_field, sTemp);
set sSql = concat(sSql, '(', primary_field, ')', ' from (select '
);
set sSql = concat(sSql, ' ', primary_field, ' from '
, tablename, sOrder);
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)'
, sOrder);
set sSql = concat(sSql, ' limit ?'
);
else

set sSql = concat('select ', columns, ' from ', tablename);
set sSql = concat(sSql, ' where '
, primary_field, sTemp);
set sSql = concat(sSql, '(', primary_field, ')', ' from (select '
);
set sSql = concat(sSql, ' ', primary_field, ' from '
, tablename, sOrder);
set sSql = concat(sSql, ' limit ', (currpage-1)*pagesize, ') as tabtemp)'
, sOrder);
set sSql = concat(sSql, ' limit ?'
);
end if
;
end if
;
set @iPageSize =
pagesize;
set @sQuery =
sSql;
prepare stmt from @sQuery
;
execute stmt using @iPageSize
;
end
;
$$
delimiter;

//调用

call prc_page_result(1, "字段列表", "表名", "条件", "排序字段", 1, "id", 25);
参数说明:

第几页,显示的字段(如name,id),表名,Where后面的条件,排序的字段,1表示降序,id主键,25每页显示条数

//PHP调用

<?php
$server="localhost";
$ua="root";
$pwd="123456";
$conn=mysql_connect($server,$ua,$pwd,1,131072); //后面比平时多了1,131072表示本地化,这样才能返回记录集
mysql_select_db("guestbook");
mysql_query("set names 'gbk'");
//$re=mysql_query("select * from guestbook order by id desc");
$re=mysql_query("call prc_page_result(1, 'name,time', 'guestbook', 'id<>0', 'id', 1, 'id', 2);");

while($row=mysql_fetch_assoc($re)){
echo $row["name"]."<br>";
echo $row["time"]."<br>";

}
mysql_close();
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值