一个兼容mssql 和mysql 的 limit 的函数
时间:2007-08-28
来源:互联网
复制PHP内容到剪贴板
{
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));
?>
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;
}
这一句就很完整了!
所以在加上一个条件就避免了!
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分页效果) .
受你启发 我完善了我的我的分页类
<br>
现在是多数据库 多功能分页类(包含AJAX分页效果) .

作者: web_boy 发布时间: 2008-06-23
多数据库 多功能分页类;楼上的你好!能不能分享哈你的成果呢!
作者: cybmm 发布时间: 2008-06-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28