|
楼主 |
发表于 2009-7-9 09:03:39
|
显示全部楼层
本帖最后由 erebus 于 2009-7-9 09:49 编辑
已经解决,谢谢hex
服务器上的sql的权限不够或者把EXEC SP_CURSORFETCH 给禁掉了,自己把数据库驱动改了一下,但是这样比较弱,请大家讨论给下好点儿的解决办法。
我的网站基本都是一个表查询,语句都是select a,b,c from table where *** order by***类型的,所以就用一下变通办法,修改driver的_limit函数:
PHP复制代码
function _limit ($sql, $limit, $offset){
$sql=trim($sql);
if(strtolower(substr($sql,0,6))=='select'){
$sqlExep="select top ".intval($offset)." id ".strstr(str_replace('from','FROM',$sql),'FROM');
$sqlFrom="select top $limit ".substr($sql,6);
$sqlFromWhere=strstr(str_replace('where','WHERE',$sqlFrom),'WHERE');
if(empty($sqlFromWhere)){
$sqlFromOrder=strstr(str_replace('order','ORDER',$sqlFrom),'ORDER');
$sqlFrom=str_replace($sqlFromOrder,'',$sqlFrom);
$sqlFrom .= "where id not in(".$sqlExep.") ".$sqlFromOrder;
}else{
$sqlFrom=str_replace($sqlFromWhere,'',$sqlFrom);
$sqlFrom .= "where id not in(".$sqlExep.") and ".substr(trim($sqlFromWhere),5);
}
return $sqlFrom;
}else{
return $sql;
}
}
复制代码 |
|