php pdo sqlserver分页sql的处理

原创 2015年11月18日 12:46:11

今日弄了点小东西,需要做一个sqlsrv的分页函数

最后也没弄成,算了,干脆有些东西写死了...

pdo_exequery为自己弄的一个pdo的查询封装函数

主要是基于这个处理:

preg_replace("/(t|T)(o|O)(p|P])\s\d{1,12}/","","select top 100 *");

首先要接收pageid及pagesize

if(isset($_GET["pageid"]))$intCurrentPage = $_GET["pageid"];
else
$intCurrentPage = 1;
$intPageSize = 20;

然后

设置一个分页时一个基准的orderid

 $orderbyid="FItemID";

然后构建一个SQL用于获得总行数且包含分页的处理

$curcuror=$intCurrentPage*$intPageSize;

$SQL="select top $curcuror a.FNumber,a.FItemID,a.FName,a.FModel,d.fname as measureunits,e.fname as secmeasureunits from ".$tablename." a left join t_MeasureUnit d on a.FUnitID=d.FMeasureUnitID left join t_MeasureUnit e on a.FSecUnitID=e.FMeasureUnitID where 1=1 ";

然后进行替换,查询总行数

$newSQL=preg_replace("/(t|T)(o|O)(p|P])\s\d{1,12}/","",$SQL);
$ROW=pdo_exequery($pdo_msconnection,$newSQL);
$inumber=0;
if($ROW)$inumber=count($ROW);

最后是进行SQL的处理

if($intCurrentPage ==null)$intCurrentPage=1;
$intRecordTotal = $inumber;
if($intCurrentPage!="all"){
$intPageCount = intval(($intRecordTotal-1) / $intPageSize)+1;
if($intPageCount==0)$intPageCount=1;
if ($intCurrentPage > $intPageCount) {$intCurrentPage = $intPageCount;}
$intStart = $intPageSize * ($intCurrentPage - 1);
$offset=$intPageSize*($intCurrentPage-1);
if ($offset<0){$offset=0;}

//主要在于这里,进行了分页的SQL合并
$SQL="select * from (select top $intPageSize * from ($SQL)o1 order by $orderbyid desc)o2 order by $orderbyid asc";
}
else
{
$intCurrentPage=1;
$intPageCount=1;
}

$ROW=pdo_exequery($pdo_msconnection,$SQL);
$inumber=0;
if($ROW)$inumber=count($ROW);

此处即可进行数据的处理了

缺陷在于只能进行一个order by的处理,如果有其他需要,依样画葫芦,应该是没问题的


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SQL实现分页(通过PHP)以及增删改查核心语句

连接数据库 $dbHost="localhost"; $dbUserName="root"; $dbPWD="123456"; $dbName="mentholatum"; $char_code="u...

ROW_NUMBER()函数的使用

ROW_NUMBER()函数是Sql 2005中新添的一个函数。通常它被用在分页的SQL语句中。 微软官方的对此函数的描述是:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。 我...

ROW_NUMBER()的用法

今天在博客园上看到一篇关于ROW_NUMBER()的用法,觉得分析的挺透彻,就C过来了,分享一下哈! ROW_NUMBER() 说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。...

php pdo分页类

  • 2011-11-30 12:06
  • 11KB
  • 下载

Oracle、DB2、SQLSERVER、MySQL、Access分页SQL语句

sqlserver分页 1.  第一种分页方法  参数:  pageSize 每页显示多少条数据  pageNumber 页数从客户端传来  totalRecouds 表中的总记录数 select c...

php5.4之PDO连接SQLSERVER

  • 2016-04-23 15:54
  • 22.30MB
  • 下载

Sybase,Oracle,sqlserver中sql分页的方法汇总

Sybase 因为Sybase数据本身的局限性,要实现分页相对其它数据来说还是比较麻烦. --方法1, --这个方法从网上找来的,好处可直接传入SQL,并且对传入的SQL语句没有什么限制,合法的就行...

自己写的PHP pdo处理类

zend framework与php 5.3.8的pdo sql server 2008

zend1.1.1 在php 5.3.8环境下,目前支持sql 的pdo连接方式有问题, 需要修改: 1 Zend\Db\Adapter\Pdo\Mssql.php: $_pdoType为->...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)