`
ruilinruirui
  • 浏览: 1050147 次
文章分类
社区版块
存档分类
最新评论

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();
?>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics