mssql server 2005连接类
class msdriver{
public $error;
public $querynum=0;
public $link;
public $lastquery;
public $lastinsert_id=0;
public $error_callback=array('record'); //record,ignore,report,abort
public $error_report_file=root./webdata/db.error.log;
function __construct($server='',$connectioninfo=array()){
if ($server){
$this->connect($server,$connectioninfo);
}
}
function __destruct(){
!$link && $link= &$this->link;
if ($link) sqlsrv_close( $link );
}
function connect($dbhost='(local)', $connectioninfo=array()){
$this->link=sqlsrv_connect($dbhost,$connectioninfo);
if (!$this->link) $this->halt();
}
/**
*查询过程
*
* @param string $sql
* @param resource $link
* @return resource
*/
function query($sql=,$link=''){
!$link && $link= &$this->link;
);
$this->lastquery=&$query;
if (!$query) $this->halt();
$reg = #insert into#;
if(preg_match($reg,$sql)){
$res = sqlsrv_query($link,select @@identity as id);
$this->lastinsert_id = sqlsrv_get_field($res,0);
}
return $query;
}
/**
* 返回字段总数
*
* @param resource $result
* @return number
*/
function num_fields($result=''){
if (!$result) $this->halt();
return @sqlsrv_num_fields($result);
}
/**
* 返回字段值
*
* @param resource $result
* @param int $fieldindex
* @return value
*/
function result($result='',$fieldindex=0){
if (!$result) $this->halt();
return sqlsrv_get_field($result,$fieldindex);
}
/**
* 返回行数组
*
* @param unknown_type $result
* @return unknown
*/
function fetch_array($result,$type=sqlsrv_fetch_assoc){ //sqlsrv_fetch_numeric,sqlsrv_fetch_assoc,sqlsrv_fetch_both
!$result && $result=$this->lastquery;
if (!$result) $this->halt();
);
return is_array($r)?$r:0;
}
/**
* 返回影响的记录数
*
* @param resource $result
* @return number
*/
function affected_rows($result) {
if (!$result) $this->halt();
return sqlsrv_rows_affected($result);
}
function insert_id(){
return $this->lastinsert_id;
}
function freeresult($result){
!$result && $result=$this->lastquery;
sqlsrv_free_stmt($result);
}
/**
* 错误的处理方式
*
*/
function halt(){
$err=$this->geteroor();
//var_dump($err['']);
if (in_array('record',$this->error_callback)){
$fp=fopen($this->error_report_file,'a+');
if ($fp){
fwrite($fp,[.date(y//m/dh:i:s).](.$err['code'].).$err['message'].,url:.$_server[request_uri].?.$_server[query_string].rn);
fclose($fp);
}
}
if (in_array('report',$this->error_callback)){
echo
错误:[.date(y//m/d h:i:s).](.$err['code'].).$err['message'];
}
if (in_array('abort',$this->error_callback)){
exit;
}
}
/**
* 返回查询错误
*
* @return array
*/
function geteroor(){
$err=sqlsrv_errors();
//return array('code'=>$err['code'],'message'=>$err['message']);
return is_array($err)?$err[0]:array();
}
}