SQL SERVER进行操作的PHP类,可以执行连接数据库,执行SQL语句,查询数据,获得最后一次插入操作的ID号等功能!

/******************************************************************/

class DB_Handle{

var $ClassName = "DB_Handle";

var $Server;
var $UserName;
var $Password;
var $Database;

var $LinkID=0;
var $QueryResult="";
var $LastInsertID = "";

/* private ignore=>ignore the error and continue, halt=>report the error and halt, report=>report the error and continue */
var $Halt_On_Error = "report";

var $Error = "";
var $ErrNo = 0;

/**public
* remark: This is the db_mysql_class''''s structure
* function: Set the server,username,password,database variable.
*/
function DB_Handle($server="",$username="",$password="",$database=""){
   $this->Server = $server;
   $this->UserName = $username;
   $this->Password = $password;
   $this->Database = $database;
}

   
/**public
* function: Connect database and select database
* success: retun 1
* failed: return 0
*/
function connect(){
   $this->LinkID = @mssql_pconnect($this->Server,$this->UserName,$this->Password);
   if(!$this->LinkID){
    $this->halt("mssql_pconnect($this->Server,$this->UserName,$this->Password): Failed");
    return 0;
   }
   if(
Database">!@mssql_select_db($this->Database)){
    $this->halt("mssql_select_db($this->Database) Failed.");
    return 0;
   }
   return 1;
}


/**public
* function: Check the database, if exist then select
* exist: return 1
* not exist: return 0
*/
function selectDatabase(){
   if(@mssql_select_db($this->Database))
    return 1;
   else
    return 0;
}

/**public
* function: Execute SQL instruction
* success: return SQL Result.
* failed: return 0;
*/
function execQuery($sql=""){
   if($this->LinkID == 0){
    $this->halt("Execute SQL Failed: Hava not valid database connect.");
    return 0;
   }
  
   ob_start();
   $this->QueryResult = mssql_query($sql,$this->LinkID);
   $error = ob_get_contents();
   ob_end_clean();
   if($error){
   
    $this->halt("Execute SQL: mssql_query($sql,$this->LinkID) failed.");
    return 0;
   }
   $reg = "#insert into#";
   if(preg_match($reg,$sql)){
    $sql = "select @@IDENTITY as id";
    $res = mssql_query($sql,$this->LinkID);
    $this->LastInsertID = mssql_result($res,0,id);
   }
   return $this->QueryResult;
}


/**public
* function: Get the query result''''s row number
* success: return the row fo the Result
* failed: return 0
*/
function getTotalRowNum($result=""){
   if($result != "") $this->QueryResult = $result;
   $row = @mssql_num_rows($this->QueryResult);
   if($row >= 0) return $row;
   $this->halt("Get a row of result Failed: Result $result is invalid.");
   return 0;
}


/**public
* function: Get the last insert record''''s id
* success: return id
* failed: return 0
*/
function lastInsertID(){
   return $this->LastInsertID;
}


/**public
* function: Get a field''''s value
* success: return value of the field
* failed: return 0
*/
function getField($result="",$row=0,$field=0){
   if($result != "") $this->QueryResult = $result;
   $fieldvalue = @mssql_result($this->QueryResult,$row,$field);
   if($fieldvalue != "") return $fieldvalue;
   $this->halt("Get field: mssql_result($this->QueryResult,$row,$field) failed.");
   return 0;
  
   //Here should have error handle
}


/**public
* function: Get next record
* success: return a array of the record''''s value
* failed: return 0
*/
function nextRecord($result=""){
   if($result != "") $this->QueryResult = $result;
   $record = @mssql_fetch_array($this->QueryResult);
   if(is_array($record)) return $record;
   //$this->halt("Get the next record Failed: the Result $result is invalid.");
   return 0;
}


/**public
* function: Free the Query Result
* success return 1
* failed: return 0
*/
function freeResult($result=""){
   if($result != "") $this->QueryResult = $result;
   return @mssql_free_result($this->QueryResult);
}


/**public
* function: Set the Halt_On_Error''''s state
* success: return 1
* failed: return 0
*/
function setHaltOnError($state="ignore"){
   if(!($state == "ignore" || $state == "report" || $state == "halt")){
    $this->halt("Set the Halt_On_Error Fail: There is no state value $state");
    return 0;     
   }
   $this->Halt_On_Error = $state;
   return 1;
}


/**public
* function: Get the Halt_On_Error''''s state
*/
function getHaltOnError(){
   return $this->Halt_On_Error;
}


/**public
* function: Get the class''''s name
*/
function toString(){
   return $this->ClassName;
}


/**private
* function: Error handle
*/
function halt($msg){
   $this->Error = @mysql_error($this->LinkID);
   $this->ErrNo = @mysql_errno($this->LinkID);
   if ($this->Halt_On_Error == "ignore") return;
   $this->makeMsg($msg);
   if ($this->Halt_On_Error == "halt") die("Session halted");
}


/**private
* function: Make error information and print
*/
function makeMsg($msg){
   printf("Database error: %s
\n", $msg);
   printf("MySQL Error: %s (%s)
\n",$this->ErrNo,$this->Error);
}
}

?>