+ -
当前位置:首页 → 问答吧 → 一个兼容mssql 和mysql 的 limit 的函数

一个兼容mssql 和mysql 的 limit 的函数

时间:2007-08-28

来源:互联网

复制PHP内容到剪贴板
PHP代码:
function sqlLimit($sql, $count, $offset = 0,$dbclass='mssql')
     {
   switch ($dbclass) {
  case 'mssql':
         $count = intval($count);
          if ($count <= 0) {
            //throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
          }
         $offset = intval($offset);
         if ($offset < 0) {
            //throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
          }
         $orderby = stristr($sql, 'ORDER BY');
         if ($orderby !== false) {
            $sort = (stripos($orderby, 'desc') !== false) ? 'desc' : 'asc';
            $order = str_ireplace('ORDER BY', '', $orderby);
            $order = trim(preg_replace('/ASC|DESC/i', '', $order));
          }
          $sql = preg_replace('/^SELECT\s/i', 'SELECT TOP ' . ($count+$offset) . ' ', $sql);
         $sql = 'SELECT * FROM (SELECT TOP ' . $count . ' * FROM (' . $sql . ') AS inner_tbl';
         if ($orderby !== false) {
            $sql .= ' ORDER BY ' . $order . ' ';
            $sql .= (stripos($sort, 'asc') !== false) ? 'DESC' : 'ASC';
         }
         $sql .= ') AS outer_tbl';
         if ($orderby !== false) {
            $sql .= ' ORDER BY ' . $order . ' ' . $sort;
         }
          return $sql;
   break;
  case 'mysql':
   return ($sql.'LIMIT '.$offset.','.$count);
   break;
  }
     } 
echo (sqlLimit('SELECT * FROM DD ',10,2));
?>

作者: 逆雪寒   发布时间: 2007-08-28

昵称: web_boy  时间: 2008-6-23 15:54
帮我解决了MSSQL分页难题

作者: web_boy   发布时间: 2008-06-23

在分页中TOP  $count  这里值始终没有变化 则始终显示$count 条 如果分页只剩一条的话则还是TOP  $count  条
所以在加上一个条件就避免了!
function sqlLimit($sql, $count, $offset = 0,$dbclass='mssql',$totalnum=10)
$totalnum=10 是数据列表总数 默认10

$totalnum = intval($totalnum);
if ($totalnum-($offset+$count)<0){
$count=$totalnum%$count;
}
这一句就很完整了!

作者: web_boy   发布时间: 2008-06-23

<br>
受你启发 我完善了我的我的分页类
<br>
现在是多数据库 多功能分页类(包含AJAX分页效果) .

作者: web_boy   发布时间: 2008-06-23

多数据库 多功能分页类;楼上的你好!能不能分享哈你的成果呢!

作者: cybmm   发布时间: 2008-06-24