My code for mssql
please enable the php's mssql extentions.
it used like so many mysql class that you can find by google
------------------------------------------------------------------------------------------------------------------
<?php
if(!defined('IN_WEB')) {
        exit('Access Denied');
}
ini_set('mssql.datetimeconvert',0);//php>4.2.0 disable php's automatic
datetime convert
Class DB {
        var $querynum=0;
        var $mssql_link;
        var $conn_link;
        var $sp_link;
        var $sp_name='';
        var $error_stop=0;
        var $show_error=0;
        var $dbhost;
        var $dbuser;
        var $dbpw;
        var $dbname;
        var $pconnect;
        var $var_type=array();
        var $fields_name=array();
        var $last_error_msg='';
        var $phprunversion='';
        function DB() {
                        //define type for sp
                        $this->var_type['sp_bit']=SQLBIT;
                        $this->var_type['sp_tinyint']=SQLINT1;
                        $this->var_type['sp_smallint']=SQLINT2;
                        $this->var_type['sp_int']=SQLINT4;
                        $this->var_type['sp_bigint']=SQLVARCHAR;
                        $this->var_type['sp_real']=SQLFLT4;
                        $this->var_type['sp_float']=SQLFLT8;
                        $this->var_type['sp_float-null']=SQLFLTN;
                        $this->var_type['sp_smallmoney']=SQLFLT8;
                        $this->var_type['sp_money']=SQLFLT8;
                        $this->var_type['sp_money-null']=SQLFLT8;
                        $this->var_type['sp_char']=SQLCHAR;
                        $this->var_type['sp_varchar']=SQLVARCHAR;
                        $this->var_type['sp_text']=SQLTEXT;
                        $this->var_type['sp_datetime']=SQLINT4;
                        $this->phprunversion=phpversion();
                        //end
        }
/*>=php4.4.1,>=php5.1.1
a new paramate for if use newlink for connect,pconnect
*/
        function rconnect($newlink=false){//2007.03.01 by hack988 fix 
phpversion check
                if($this->phprunversion >= '4.4.1' && $this->phprunversion < 
'5.0.0'
|| $this->phprunversion >= '5.1.1'){
                        return $this->rconnect4p($newlink);
                }else{
                        return $this->rconnect3p();
                }
        }
        function rconnect3p(){
                $this->mssql_link = $this->pconnect==0 ?
mssql_connect($this->dbhost, $this->dbuser, $this->dbpw) :
mssql_pconnect($this->dbhost, $this->dbuser, $this->dbpw);
                if(!$this->mssql_link){
                        $this->halt("connect
($this->pconnect)MSSQL($this->dbhost,$this->dbuser)failed!");
                        return false;
                }else{
                        $this->conn_link=$this->mssql_link;
                        if($this->dbname) {
                                if 
(!...@$this->select_db($this->dbname,$this->conn_link)){
                                        $this->halt('can not use database 
'.$this->dbname);
                                        return false;
                                }else{
                                        return true;
                                }
                        }else{
                                return true;
                        }
                }
        }
        function rconnect4p($newlink=false){
                $this->mssql_link = $this->pconnect==0 ?
mssql_connect($this->dbhost, $this->dbuser, $this->dbpw , $newlink) :
mssql_pconnect($this->dbhost, $this->dbuser, $this->dbpw, $newlink);
                if(!$this->mssql_link){
                        
$this->halt("reconect($this->pconnect)MSSQL($this->dbhost,$this->dbuser)failed");
                        return false;
                }else{
                        $this->conn_link=$this->mssql_link;
                        if($this->dbname) {
                                if 
(!...@$this->select_db($this->dbname,$this->conn_link)){
                                        $this->halt('can not use database 
'.$this->dbname);
                                        return false;
                                }else{
                                        return true;
                                }
                        }else{
                                return true;
                        }
                }
        }

        function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect =
0,$auto_conn=0 ,$newlink=false) {
                $this->dbhost=$dbhost;
                $this->dbuser=$dbuser;
                $this->dbpw=$dbpw;
                $this->dbname=$dbname;
                $this->pconnect=$pconnect;
                if($auto_conn){
                        return $this->rconnect($newlink);
                }else{
                        return true;
                }
        }

        function close() {
                if($this->conn_link){
                        $result=mssql_close($this->conn_link);
                }else{
                        $result=true;
                }
                $this->mssql_link='';
                $this->sp_link='';
                $this->conn_link='';
                return $result;
        }

        function select_db($dbname){
                $this->mssql_link=mssql_select_db("[".$dbname."]");
                return $this->mssql_link;
        }

        function query($SQL,$method='') {
                if($method=='UNBUFFERED'){
                        mssql_query("SET NOCOUNT ON",$this->conn_link);
                        $this->mssql_link = mssql_query($SQL,$this->conn_link);
                        mssql_query("SET NOCOUNT OFF",$this->conn_link);
                }else{
                        $this->mssql_link = mssql_query($SQL,$this->conn_link);
                }

                if (!$this->mssql_link)  $this->halt('SQL query error: ' . 
$SQL);
                $this->querynum++;
                return $this->mssql_link;
        }
        
        function get_one($sql,$prefix=""){
                $query=$this->query($sql,'UNBUFFERED');
                if(strlen($prefix)>0){
                        $this->get_fields_name();
                        $rs=$this->fetch_duplicate_array($query);
                }else{
                        $rs = $this->fetch_array($query, MSSQL_ASSOC);
                }
                return $rs;
        }

        function seek($num,$link=''){
                $link = empty($link) ? $this->mssql_link : $link;
                return mssql_data_seek($link,$num);
        }

        function fetch_array($query, $result_type = MSSQL_ASSOC) {
                return mssql_fetch_array($query, $result_type);
        }

        function fetch_duplicate_array($query, $prefix="dup_") {
                if(count($this->fields_name)<1) return false;
                $fields=$this->fetch_array($query, MYSQL_NUM);
                if(!$fields) return false;
                $reternfields=array();
                foreach($fields AS $key=>$value){
                        if(isset($reternfields[$this->fields_name[$key]]))
                                
$reternfields[$prefix.$this->fields_name[$key]]=$value;
                        else
                                
$reternfields[$this->fields_name[$key]]=$fields[$key];
                }
                return $reternfields;
        }

        function affected_rows($link='') {
                $link= empty($link) ? $this->conn_link :$link;
                return mssql_rows_affected($link);
        }

        function get_fields_name($link=''){
                $link= empty($link) ? $this->mssql_link :$link;
                $fieldscount=$this->num_fields($link);
                for($i=0;$i<$fieldscount;$i++){
                        $field[$i]=mssql_field_name($this->mssql_link,$i);
                }
                $this->fields_name=$field;
        }

        function num_rows($link='') {
                $link = empty($link) ? $this->mssql_link : $link;
                $rows = mssql_num_rows($link);
                return $rows;
        }

        function num_fields($query) {
                return mssql_num_fields($query);
        }

        function sp_init($sp_name){
                $this->sp_link=mssql_init($sp_name,$this->conn_link);
                !$this->sp_link && $this->halt('Init PROCEDURE Failed :' . 
$sp_name);
                $this->sp_name=$sp_name;
                return $this->sp_link;
        }

        function sp_bind($parameter,&$var,$type,$if_out=false,$if_null=false){
                if(!$this->sp_link){
                         $this->halt('Can not bind var for PROCEDURE' . 
$parameter);
                         return false;
                }else{
                        
if(!mssql_bind($this->sp_link,$parameter,$var,$this->var_type[$type],$if_out,$if_null)){
                                $this->halt('PROCEDURE var binding failed' .
$parameter.$this->var_type[$type]);
                                return false;
                        }else{
                                return true;
                        }
                }
        }

        function sp_execute($skipout,$sp_link=''){
                $this->sp_link=$sp_link? $sp_link : $this->sp_link;
                $this->mssql_link=mssql_execute($this->sp_link,$skipout);
                if (!$this->mssql_link)  $this->halt('exec PROCEDURE failed: ' 
. $SQL);
                $this->querynum++;
                return $this->mssql_link;
        }

        function sp_free_statement($sp_link=''){
                $this->sp_link=$sp_link? $sp_link : $this->sp_link;
                if(!mssql_free_statement($this->sp_link)){
                        $this->halt('free memory failed 
(PROCEDURE):'.$this->sp_name);
                        return false;
                }else{
                        $this->sp_link='';
                        return true;
                }
        }

        function free_result($query) {
                return mssql_free_result($query);
        }

        function insert_id() {
                $rs = $this->get_one("SELECT @@IDENTITY AS [insertid]");
                if($rs)
                        return $rs['insertid'];
                else
                        return false;
        }

        function halt($msg='') {
                if($this->show_error){
                        echo date("Y-m-d H:i:s",time())."<br/>\n";
                        echo $msg."<br/>\n";
                        $this->last_error_msg="SQL Server
Msg:".nl2br(mssql_get_last_message())."<br/>\n";
                        echo $this->last_error_msg;
                        $this->last_error_msg = $msg.$this->last_error_msg;
                }
                $this->error_stop && exit;
        }
}
?>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to