adodb 库 _adodb_getcount函数的问题
最近利用adodb库做分页处理,其中返回记录总数使用了_adodb_getcount函数,但我发现返回的结果和真正结果不一样,原因是我在分页查询语句里使用了limit限制最多的记录数,但在_adodb_getcount函数中有这样的处理
if (isset($rewritesql) && $rewritesql != $sql) {
if (preg_match('/\sLIMIT\s+[0-9]+/i',$sql,$limitarr)) $rewritesql .= $limitarr[0];
var_dump($rewritesql);
if ($secs2cache) {
// we only use half the time of secs2cache because the count can quickly
// become inaccurate if new records are added
$qryRecs = $zthis->CacheGetOne($secs2cache/2,$rewritesql,$inputarr);
} else {
$qryRecs = $zthis->GetOne($rewritesql,$inputarr);
}
if ($qryRecs !== false) return $qryRecs;
}
他把limit从我的sql语句里拆出来了,最终变成了下面这种形式。
SELECT COUNT(*) FROM ( 被他重新组织的sql ) _ADODB_ALIAS_ limit xx
COUNT(*)这样的语句应该只会返回一条记录,他把我的limit拆出来放到外面,导致我的limit不起作用,而且这个limit对这个COUNT(*)也毫无用处,不知道这个是bug还是我的用法错误?
而且由于我的sql语句中带有limit,导致翻页代码出错。我的数据库是postgresql,翻页调用了SelectLimit函数,这个函数在我的sql后边拼接了limit和offset,导致最终sql中出现两个limit所以出错。不知道这个算不算bug。我现在的处理是把_adodb_getcount中的那段给注释掉,然后在SelectLimit中把我原有的limit语句截掉。不知道我这样改会不会给其他查询带来影响。
如果按他原有的方式,我的分页查询中就不能出现limit和offset,但实际上我经常需要限制分页查询内容的总数,比如超过1000条记录就不列出来了。也许这个是bug。不知道高人们如何看?
if (isset($rewritesql) && $rewritesql != $sql) {
if (preg_match('/\sLIMIT\s+[0-9]+/i',$sql,$limitarr)) $rewritesql .= $limitarr[0];
var_dump($rewritesql);
if ($secs2cache) {
// we only use half the time of secs2cache because the count can quickly
// become inaccurate if new records are added
$qryRecs = $zthis->CacheGetOne($secs2cache/2,$rewritesql,$inputarr);
} else {
$qryRecs = $zthis->GetOne($rewritesql,$inputarr);
}
if ($qryRecs !== false) return $qryRecs;
}
他把limit从我的sql语句里拆出来了,最终变成了下面这种形式。
SELECT COUNT(*) FROM ( 被他重新组织的sql ) _ADODB_ALIAS_ limit xx
COUNT(*)这样的语句应该只会返回一条记录,他把我的limit拆出来放到外面,导致我的limit不起作用,而且这个limit对这个COUNT(*)也毫无用处,不知道这个是bug还是我的用法错误?
而且由于我的sql语句中带有limit,导致翻页代码出错。我的数据库是postgresql,翻页调用了SelectLimit函数,这个函数在我的sql后边拼接了limit和offset,导致最终sql中出现两个limit所以出错。不知道这个算不算bug。我现在的处理是把_adodb_getcount中的那段给注释掉,然后在SelectLimit中把我原有的limit语句截掉。不知道我这样改会不会给其他查询带来影响。
如果按他原有的方式,我的分页查询中就不能出现limit和offset,但实际上我经常需要限制分页查询内容的总数,比如超过1000条记录就不列出来了。也许这个是bug。不知道高人们如何看?
...全文
相关推荐
adodb与adodb_lite之比较
adodb与adodb_lite之比较 作者:欣然随风 adodb出世后得到许多PHPer的肯定和支持,树大招风不知什么时候出了个adodb_lite,说是对adodb缩水版,并且宣称不影响原版的基本功能。出于N种冲动,对其两种进行了一些简单的比较,其结果让人啼笑皆非。以下为对比结果: adodb_lite缺少: 1、FetchNextObject(); // 这个影响倒不是很大 2、DBDate(); // 日期转换方法,没有怎么行! 3、CacheSelectLimit(); // 居然这个都不支持,常用的MSSQL都不能支持
php adodb连接mssql解决乱码问题
php程序是utf-8的,sqlserver是2005中文,内码是gb18030. 普通的mssql_connect无法设置内码转换,读出来的数据在utf-8页面显示乱码。
adodb-5.20.13.zip_adodb_adodb5_adodb5下载_adodb5使用教程_sick655
adodb-5.20.13.zip查看所有分类 (建议增加分类)
adodb.zip_ACCESS数据库_access mysql_adodb mysql_adodb-time.inc.php
将access数据库数据插入mysql 数据库当中
ADODB.rar_ado adodb_adodb ado_vb sqlserver
vb ADO方式,连接SQLSERVER数据库。


基础编程
