PHP连接MSSQL类
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 (! @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 = "") {
$this->connect();
if ($this->LinkID == 0) {
$this->halt ( "Execute SQL Failed: Have 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 );
}
}