Heim  >  Artikel  >  Datenbank  >  php mssql server 2005数据库连接类

php mssql server 2005数据库连接类

WBOY
WBOYOriginal
2016-06-07 17:47:131090Durchsuche

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();
    }
   
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn