您好,欢迎访问一九零五行业门户网

php mssql server 2005数据库连接类

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();
    }
}
其它类似信息

推荐信息