가장 흔한 것은 php와 mysql을 연결하는 클래스입니다. 오늘은 php와 sql 서버를 연결하는 클래스를 공유하겠습니다.
관심있는 친구들은 그것을 참고할 수 있습니다.
-
-
class DB_Handle { - var $ClassName = "DB_Handle";
- var $Server;
- var $UserName;
- var $Password;
- var $Database;
- var $LinkID = 0;
- var $QueryResult = "";
- var $LastInsertID = "";
- /* privateignore=>오류를 무시하고 계속, quit=>오류를 보고하고 중지, 보고=>오류를 보고하고 계속 */
- var $Halt_On_Error = "report";
- var $Error = "";
- var $ErrNo = 0;
- /**public
- * 참고사항: db_mysql_class의 구조입니다
- * 기능: 서버, 사용자 이름, 비밀번호, 데이터베이스 변수를 설정합니다.
- */
- function DB_Handle($server = "", $username = "", $password = " ", $database = "") {
- $this->Server = $server;
- $this->UserName = $username;
- $this->Password = $password;
- $this->Database = $database;
- }
- /**public
- * 함수: 데이터베이스 연결 및 데이터베이스 선택
- * 성공: 반환 1
- * 실패: 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): 실패함" );
- return 0;
- }
- if (! @mssql_select_db ( $this->Database )) {
- $this->halt ( "mssql_select_db($this->Database) 실패." );
- return 0;
- }
- return 1;
- }
- /**public
- * 기능: 데이터베이스를 확인하고 존재하는 경우 선택
- * 존재: 1 반환
- * 존재하지 않음: 0
- 반환*/
- function selectDatabase() {
- if (@mssql_select_db ( $this->Database ))
- return 1;
- else
- return 0;
- }
- /**public
- * 함수: SQL 명령 실행
- * 성공: SQL 결과를 반환합니다.
- * 실패: 0을 반환합니다.
- */
- function execQuery($sql = "") {
- $this->connect();
- if ($this->LinkID == 0) {
- $this->halt ( "SQL 실행 실패: 유효한 데이터베이스 연결이 없습니다." );
- return 0;
- }
- ob_start ();
- $this->QueryResult = mssql_query ( $sql, $this->LinkID );
- $error = ob_get_contents ();
- ob_end_clean ();
- if ( $error) {
- $this->halt ( "SQL 실행: mssql_query($sql,$this->LinkID)가 실패했습니다." );
- return 0;
- }
- $reg = "#insert into#";
- if (preg_match ( $reg, $sql )) {
- $sql = "ID로 @@IDENTITY 선택";
- $res = mssql_query ( $sql, $ this->LinkID );
- $this->LastInsertID = mssql_result ( $res, 0, id );
- }
- return $this->QueryResult;
- }
-
- /**public
- * 함수: 쿼리 결과의 행 번호를 가져옵니다
- * 성공: 결과의 행을 반환
- * 실패: 0을 반환
- */
- function getTotalRowNum($result = "") {
- if ($result != "")
- $this->QueryResult = $result;
- $row = @mssql_num_rows ( $this->QueryResult );
- if ($row >= 0)
- return $row;
- $this->halt ( "결과 행 가져오기 실패: 결과 $result가 유효하지 않습니다." );
- return 0;
- }
-
- /**public
- * 함수: 마지막 삽입 레코드의 ID를 가져옵니다
- * 성공: ID 반환
- * 실패: 0 반환
- */
- function lastInsertID() {
- return $this- >LastInsertID;
- }
-
- /**public
- * 함수: 필드 값 가져오기
- * 성공: 필드 값 반환
- * 실패: 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 ( "필드 가져오기: mssql_result($this->QueryResult,$row,$field)가 실패했습니다." );
- return 0;
-
- //여기에 오류 핸들이 있어야 합니다
- }
-
- /**public
- * 함수: 다음 레코드 가져오기
- * 성공: 레코드 값의 배열을 반환
- * 실패: 0 반환
- */
- function nextRecord($result = "") {
- if ($result != "")
- $this->QueryResult = $ result;
- $record = @mssql_fetch_array ( $this->QueryResult );
- if (is_array ( $record ))
- return $record;
- //$this->halt(" 다음 레코드 가져오기 실패: 결과 $result가 유효하지 않습니다.");
- return 0;
- }
-
- /**public
- * 함수: 쿼리 결과 해제
- * 성공 반환 1
- * 실패: 0 반환
- */
- function freeResult($result = " ") {
- if ($result != "")
- $this->QueryResult = $result;
- return @mssql_free_result ( $this->QueryResult );
- }
-
- /**public
- * 함수: Halt_On_Error 상태 설정
- * 성공: 1을 반환
- * 실패: 0을 반환
- */
- function setHaltOnError($state = "ignore") {
- if (! ($state == "ignore" || $state == "report" || $state == "halt")) {
- $this->halt ( "Halt_On_Error 설정 실패: 상태 값 $state가 없습니다." );
- return 0;
- }
- $ this->Halt_On_Error = $state;
- return 1;
- }
-
- /**public
- * 함수: Halt_On_Error 상태를 가져옵니다
- */
- function getHaltOnError() {
- return $this-> Halt_On_Error;
- }
-
- /**public
- * 함수: 클래스 이름 가져오기
- */
- function toString() {
- return $this->ClassName;
- }
-
- / **private
- * 함수: 오류 핸들
- */
- function quit($msg) {
- $this->Error = @mysql_error ( $this->LinkID );
- $this->ErrNo = @mysql_errno ( $this->LinkID );
- if ($this->Halt_On_Error == "무시")
- return;
- $this->makeMsg ( $msg );
- if ( $this->Halt_On_Error == "halt")
- die ( "세션이 중단되었습니다" );
- }
-
- /**private
- * 기능: 오류정보를 작성하고 인쇄합니다
- */
- function makeMsg($msg) {
- printf ( "데이터베이스 오류: %sn", $msg );
- printf ( "MySQL 오류: %s (%s)n", $this->ErrNo, $this->Error ) ;
- }
- }
-
复제대码
|