PHP编程:php实现可用于mysql,mssql,pg数据库操作类
《php实现可用于mysql,mssql,pg数据库操作类》要点: PHP教程本篇章节讲解可用mysql,pg三种数据库的数据库操作类,你只要作任何修改就可以方便的改变你数据库的类型.分享给大家供大家参考.具体分析如下: PHP教程函数清单,索引: PHP教程Open:打开数据库连接 Line:71 PHP教程php数据库操作类代码如下:
代码如下:
<?PHP
/********************************************************************************** 此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,pg ************************************************************************************ // -函数清单 索引: // - Open: 打开数据库连接 Line:71 // - Close: 关闭数据库连接 Line:107 // - SelectDB: 选择数据库 Line:129 // - Query: 创建查询 Line:151 // - DataSeek: 移动记录指针 Line:175 // - FieldName: 获取字段名称 Line:198 // - FieldType: 获取字段类型 Line:220 // - FieldLenght: 获取字段长度 Line:242 // - FetchRow: 获取数据并保存到数组(数字索引) Line:264 // - FetchArray: 获取数据并保存进数组(数字和关联) Line:289 // - FetchObject: 获取数据并保存到对象(对象方式) Line:315 // - Result: 获取结果数据 Line:341 // - FreeResult: 刷新记录集 Line:363 // - RowsNumber: 获取记录数量 Line:385 // - FieldsNumber: 获取字段数量 Line:407 // - CurRecNumber: 获取当前记录号(从0开始) Line:429 // - RecordNumber: 获取当前行号(从1开始) Line:438 // - MoveFirstRec: 移动到第一条记录 Line:447 // - MoveLastRec: 移动到最后一条记录 Line:469 // - MovePreviousRec: 移动到前一条记录 Line:495 // - MoveNextRec: 移动到下一条记录 Line:521 // - MoveToRec: 移动到一个特定的记录(从1开始) Line:548 ************************************************************************************ //Inputs: // - dbType: databases type: mssql,mysql,pg // - connectType: connection type: c - common connection, // p - open persistent connection // - connect: for MS SQL Server - server name, // for MySQL - hostname [:port] [:/path/to/socket], // for PostgreSQL - host,port,tty,options, // dbname (without username and password) // - username // - password // - dbName: database name // - query: SQL query // - result: result set identifier // - RowNumber: // - offset: field identifier // - ResultType: a constant and can take the following values: PGSQL_ASSOC,PGSQL_NUM,and PGSQL_BOTH // - FieldName // //Returns: // - result: result set identifier // - connect link identifier // - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber) // - number of fields in the specified result set // - number of rows in the specified result set *************************************************************************************/ Class mDatabase { /***********************************成员变量定义***************************************/ var $dbType; // 数据库类型: mssql,pg var $connectType; // 连接类型: c - common connection,p - open persistent connection var $idCon; // 连接号 var $curRow; // current row number of data from the result // associated with the specified result identifier array var $seek; // current row number of data from DataSeek function array ? /***********************************成员方法实现***************************************/ /************************************************************************************ *连接数据库的函数 *************************************************************************************/ Function Open($dbType,$c,$connect,$username = "",$password = "") { $this->dbType = $dbType; Switch ($dbType) { Case "mssql": If ($connectType == "c") { $idCon = mssql_connect($connect,$username,$password); } Else { $idCon = mssql_pconnect($connect,$password); } Break; Case "mysql": If ($connectType == "c") { $idCon = mysql_connect($connect,$password); } Else { $idCon = mysql_pconnect($connect,$password); } Break; Case "pg": If ($connectType == "c") { $idCon = pg_connect($connect . " user=" . $username . " password=" . $password); } Else { $idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password); } Break; Default: $idCon = 0; Break; } $this->idCon = $idCon; Return $idCon; } /************************************************************************************ *关闭数据库连接 *************************************************************************************/ Function Close() { Switch ($this->dbType) { Case "mssql": $r = mssql_close($this->idCon); Break; Case "mysql": $r = mysql_close($this->idCon); Break; Case "pg": $r = pg_close($this->idCon); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *选择数据库 *************************************************************************************/ Function SelectDb($dbName) { Switch ($this->dbType) { Case "mssql": $r = mssql_select_db($dbName); Break; Case "mysql": $r = mysql_select_db($dbName); Break; Case "pg": $r = False; Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *创建查询 *************************************************************************************/ Function Query($query) { Switch ($this->dbType) { Case "mssql": $r = mssql_query($query,$this->idCon); Break; Case "mysql": $r = mysql_query($query,$this->idCon); Break; Case "pg": $r = pg_exec($this->idCon,$query); Break; Default: $r = False; Break; } $this->curRow[$r] = 0; $this->seek[$r] = 0; Return $r; } /************************************************************************************ *移动记录指针 *************************************************************************************/ Function DataSeek($result,$RowNumber) { Switch ($this->dbType) { Case "mssql": $r = mssql_data_seek($result,$RowNumber); Break; Case "mysql": $r = mysql_data_seek($result,$RowNumber); Break; Case "pg": $r = False; Break; Default: $r = False; Break; } $this->seek[$result] = (int) $RowNumber; Return $r; } /************************************************************************************ *获取字段名 *************************************************************************************/ Function FieldName($result,$offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_name($result,$offset); Break; Case "mysql": $r = mysql_field_name($result,$offset); Break; Case "pg": $r = pg_fieldname($result,$offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段类型 *************************************************************************************/ Function FieldType($result,$offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_type($result,$offset); Break; Case "mysql": $r = mysql_field_type($result,$offset); Break; Case "pg": $r = pg_fieldtype($result,$offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段长度 *************************************************************************************/ Function FieldLength($result,$offset) { Switch ($this->dbType) { Case "mssql": $r = mssql_field_length($result,$offset); Break; Case "mysql": $r = mysql_field_len($result,$offset); Break; Case "pg": $r = pg_fieldsize($result,$offset); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取数据并保存到数组,可以用数字索引方式拜访数组 *************************************************************************************/ Function FetchRow($result,$RowNumber = 0) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_row($result); Break; Case "mysql": $r = mysql_fetch_row($result); Break; Case "pg": $r = pg_fetch_row($result,$RowNumber); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; } ? /************************************************************************************ *获取数据并保存到数组,可以用数字索引和关联索引的方式拜访 *************************************************************************************/ Function FetchArray($result,$RowNumber = 0,$ResultType = 2) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_array($result); Break; Case "mysql": $r = mysql_fetch_array($result); Break; Case "pg": $r = pg_fetch_array($result,$RowNumber,$ResultType); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取数据并保存到对象 *************************************************************************************/ Function FetchObject($result,$ResultType = 2) { Switch ($this->dbType) { Case "mssql": $r = mssql_fetch_object($result); Break; Case "mysql": $r = mysql_fetch_object($result); Break; Case "pg": $r = pg_fetch_object($result,$ResultType); If ($r) { $this->curRow[$result] = $RowNumber; $this->seek[$result] = $RowNumber; } Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取结果数据 *************************************************************************************/ Function Result($result,$FieldName) { Switch ($this->dbType) { Case "mssql": $r = mssql_result($result,$FieldName); Break; Case "mysql": $r = mysql_result($result,$FieldName); Break; Case "pg": $r = pg_result($result,$FieldName); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *释放结果数据 *************************************************************************************/ Function FreeResult($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_free_result($result); Break; Case "mysql": $r = mysql_free_result($result); Break; Case "pg": $r = pg_freeresult($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取记录数量 *************************************************************************************/ Function RowsNumber($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_num_rows($result); Break; Case "mysql": $r = mysql_num_rows($result); Break; Case "pg": $r = pg_numrows($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取字段数量 *************************************************************************************/ Function FieldsNumber($result) { Switch ($this->dbType) { Case "mssql": $r = mssql_num_fields($result); Break; Case "mysql": $r = mysql_num_fields($result); Break; Case "pg": $r = pg_numfields($result); Break; Default: $r = False; Break; } Return $r; } /************************************************************************************ *获取当前记录号(从0开始) *************************************************************************************/ Function CurRecNumber($result) { $r = $this->curRow[$result]; Return $r; } /************************************************************************************ *获取当前行号(从1开始) *************************************************************************************/ Function RecordNumber($result) { $cr = $this->CurRecNumber($result) + 1; Return $cr; } /************************************************************************************ *移动到第一条记录 *************************************************************************************/ Function MoveFirstRec($result) { Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result,0); Break; Default: $rn = $this->DataSeek($result,0); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } Return $r; } /************************************************************************************ *移动到最后一条记录 *************************************************************************************/ Function MoveLastRec($result) { $rs = $this->RowsNumber($result); If ($rs) { $rs--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result,$rs); Break; Default: $rn = $this->DataSeek($result,$rs); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到前一条记录 *************************************************************************************/ Function MovePreviousRec($result) { $rs = $this->CurRecNumber($result); If ($rs) { $rs--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result,$rs); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到下一条记录 *************************************************************************************/ Function MoveNextRec($result) { $rs = $this->CurRecNumber($result); $rn = $this->RowsNumber($result); $rs++; If ($rs != $rn) { Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result,$rs); Break; Default: $re = $this->FetchRow($result); If ($re) { $r = $re; $this->curRow[$result]++; $this->seek[$result] = $this->curRow[$result]; } Else { $r = False; } Break; } } Return $r; } /************************************************************************************ *移动到指定记录(编号从0开始) *************************************************************************************/ Function MoveToRec($result,$RowNumber) { $rn = $this->RowsNumber($result); If ($RowNumber > 0 And $RowNumber < $rn) { $RowNumber--; Switch ($this->dbType) { Case "pg": $r = $this->FetchRow($result,$RowNumber); Break; Default: $rn = $this->DataSeek($result,$RowNumber); If ($rn) { $r = $this->FetchRow($result); If ($r) $this->curRow[$result] = $this->seek[$result]; } Else { $r = False; } Break; } } Return $r; } } //********************************方法实现完毕****************************************// ?> PHP教程希望本文所述对大家的PHP数据库程序设计有所帮助. 《php实现可用于mysql,pg数据库操作类》是否对您有启发,欢迎查看更多与《php实现可用于mysql,pg数据库操作类》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |