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的处理,如果有其他需要,依样画葫芦,应该是没问题的


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

teacher——PDO分页

/**  * Created by PhpStorm.  * User: Administrator  * Date: 16-3-1  * Time: 上午9:15  */ ...
  • Lisa_Miss
  • Lisa_Miss
  • 2016年03月01日 09:49
  • 608

一个继承自PDO类的自动分页类

1、新建一个PHP文件,文件名为pdopage_class.php,将以下代码粘贴进去。代码如下: ...
  • shishengsoft
  • shishengsoft
  • 2007年11月07日 10:21
  • 4082

php pdo分页类

  • 2011年11月30日 12:06
  • 11KB
  • 下载

PHP 中使用 PDO

PDO简介 PDO 是一个“数据库访问抽象层”,作用是统一各种数据库(MySQL、MSSQL、Oracle、DB2、PostgreSQL……)的访问接口,能轻松的在不同的数据库之间完成切换,使得数据...
  • liruxing1715
  • liruxing1715
  • 2012年01月04日 16:40
  • 8391

PHP PDO中不能使用limit,阿里云中limit的奇怪之处

1、PDO 中 limit 项目用到简单分页,开始利用PDO做。如下代码$data为array(0) {},未报错。将SQL语句复制到窗口运行却能查到数据。 $query = "SELE...
  • xiojing825
  • xiojing825
  • 2017年03月31日 21:50
  • 634

PDO分页查询模块介绍

简介 源码请移步GitHub schu-database是SchuEngine中的数据库模块,可以独立使用,也可以利用zend-servicemanager驱动. 与上个版本的schu-databas...
  • newlooc
  • newlooc
  • 2017年10月07日 20:51
  • 106

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

连接数据库 $dbHost="localhost"; $dbUserName="root"; $dbPWD="123456"; $dbName="mentholatum"; $char_code="u...
  • momDIY
  • momDIY
  • 2016年12月06日 09:33
  • 754

PHP5.6.7+连接SQL2008(2005)+使用SQLSRV读取记录集+返回参数

一. sqlsrv连接数据库 $serverName="ip, port"; $connectionInfo = array("UID"=>"username", "PWD"=>...
  • u013606980
  • u013606980
  • 2015年05月22日 09:57
  • 5124

php调用sqlserver存储过程使用事务处理

第一次编写sqlserver存储过程并在php里调用,把脑瓜都整大了,奋战了一天多最后还是搞定了。 实现功能:在sqlserver里面实现事务处理,保证数据库操作安全; 接收sqlserver存储...
  • luochuan
  • luochuan
  • 2013年05月13日 13:35
  • 1210

Linux环境PHP5.5以上连接SqlServer2008【全网最经典无错版】

linux版本:64位CentOS 6.4Nginx版本:nginx1.8.0php版本:php5.5.28Sqlserver:2008 关于Linux环境安装Nginx+PHP参考《Linux环境N...
  • 21aspnet
  • 21aspnet
  • 2015年08月12日 21:06
  • 16103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php pdo sqlserver分页sql的处理
举报原因:
原因补充:

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