修改 ./ThinkPHP\Extend\Driver\Db\DbSqlsrv.class.php
/**
* Author 淞 2016-05-20
* 经过测试修改后的查询速度提高3-4倍
* 因为只用到了查询,所以别的插入,删除,更新,未做修改
*/
//执行查询 返回数据集
public function query($str,$bind=array()) {
$this->initConnect(false);
if ( !$this->_linkID ) return false;
//释放前次的查询结果
if ( $this->queryID ) $this->free();
N('db_query',1);
// 记录开始执行时间
G('queryStartTime');
$query = sqlsrv_query($this->_linkID,$str);
return $this->getAll($query);
}
//返回数据
private function getAll($query) {
//返回数据集
$result = array();
while($row = sqlsrv_fetch_array($query,SQLSRV_FETCH_ASSOC)) //SQLSRV_FETCH_ASSOC 去除数字键名
$result[] = $row;
$result=$this->toutf8($result); //数据库为gbk需转码
return $result;
}
//另外附上转码函数,给有需要的人用
public function toutf8($Result){
$Row=array();
$key1=array_keys($Result);
$key2=array_keys($Result[$key1[0]]);
foreach ($key2 as $k=>$v){
$key2[$k]=iconv('gbk', 'utf-8', $v);
}
foreach ($Result as $k=>$v){
$value1=array_values($v);
$Row[$k]=array_combine($key2, $value1);
}
return $Row;
}
最佳答案
