本文实例讲述了可用mysql,mssql,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
php数据库操作类代码如下:
<?PHP <br />/********************************************************************************** <br />此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg <br />************************************************************************************ <br />// -函数清单 索引: <br />// - Open: 打开数据库连接 Line:71 <br />// - Close: 关闭数据库连接 Line:107 <br />// - SelectDB: 选择数据库 Line:129 <br />// - Query: 创建查询 Line:151 <br />// - DataSeek: 移动记录指针 Line:175 <br />// - FieldName: 获取字段名称 Line:198 <br />// - FieldType: 获取字段类型 Line:220 <br />// - FieldLenght: 获取字段长度 Line:242 <br />// - FetchRow: 获取数据并保存到数组(数字索引) Line:264 <br />// - FetchArray: 获取数据并保存进数组(数字和关联) Line:289 <br />// - FetchObject: 获取数据并保存到对象(对象方式) Line:315 <br />// - Result: 获取结果数据 Line:341 <br />// - FreeResult: 刷新记录集 Line:363 <br />// - RowsNumber: 获取记录数量 Line:385 <br />// - FieldsNumber: 获取字段数量 Line:407 <br />// - CurRecNumber: 获取当前记录号(从0开始) Line:429 <br />// - RecordNumber: 获取当前行号(从1开始) Line:438 <br />// - MoveFirstRec: 移动到第一条记录 Line:447 <br />// - MoveLastRec: 移动到最后一条记录 Line:469 <br />// - MovePreviousRec: 移动到前一条记录 Line:495 <br />// - MoveNextRec: 移动到下一条记录 Line:521 <br />// - MoveToRec: 移动到一个特定的记录(从1开始) Line:548 <br />************************************************************************************ <br />//Inputs: <br />// - dbType: databases type: mssql, mysql, pg <br />// - connectType: connection type: c - common connection, <br />// p - open persistent connection <br />// - connect: for MS SQL Server - server name, <br />// for MySQL - hostname [:port] [:/path/to/socket] , <br />// for PostgreSQL - host, port, tty, options, <br />// dbname (without username and password) <br />// - username <br />// - password <br />// - dbName: database name <br />// - query: SQL query <br />// - result: result set identifier <br />// - RowNumber: <br />// - offset: field identifier <br />// - ResultType: a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH <br />// - FieldName <br />// <br />//Returns: <br />// - result: result set identifier <br />// - connect link identifier <br />// - record number (starting at 0: CurrRecNumber or starting at 1: RecordNumber) <br />// - number of fields in the specified result set <br />// - number of rows in the specified result set <br />*************************************************************************************/ <br />Class mDatabase <br />{ <br />/***********************************成员变量定义***************************************/ <br />var $dbType; // 数据库类型: mssql, mysql, pg <br />var $connectType; // 连接类型: c - common connection, p - open persistent connection <br />var $idCon; // 连接号 <br />var $curRow; // current row number of data from the result <br />// associated with the specified result identifier array <br />var $seek; // current row number of data from DataSeek function array <br /> <br />/***********************************成员方法实现***************************************/ <br />/************************************************************************************ <br />*连接数据库的函数 <br />*************************************************************************************/ <br />Function Open($dbType, $c, $connect, $username = "", $password = "") <br />{ <br />$this->dbType = $dbType; <br />Switch ($dbType) { <br />Case "mssql": <br />If ($connectType == "c") { <br />$idCon = mssql_connect($connect, $username, $password); <br />} Else { <br />$idCon = mssql_pconnect($connect, $username, $password); <br />} <br />Break; <br />Case "mysql": <br />If ($connectType == "c") { <br />$idCon = mysql_connect($connect, $username, $password); <br />} Else { <br />$idCon = mysql_pconnect($connect, $username, $password); <br />} <br />Break; <br />Case "pg": <br />If ($connectType == "c") { <br />$idCon = pg_connect($connect . " user=" . $username . " password=" . $password); <br />} Else { <br />$idCon = pg_pconnect($connect . " user=" . $username . " password=" . $password); <br />} <br />Break; <br />Default: <br />$idCon = 0; <br />Break; <br />} <br />$this->idCon = $idCon; <br />Return $idCon; <br />} <br />/************************************************************************************ <br />*关闭数据库连接 <br />*************************************************************************************/ <br />Function Close() <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_close($this->idCon); <br />Break; <br />Case "mysql": <br />$r = mysql_close($this->idCon); <br />Break; <br />Case "pg": <br />$r = pg_close($this->idCon); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*选择数据库 <br />*************************************************************************************/ <br />Function SelectDb($dbName) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_select_db($dbName); <br />Break; <br />Case "mysql": <br />$r = mysql_select_db($dbName); <br />Break; <br />Case "pg": <br />$r = False; <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*创建查询 <br />*************************************************************************************/ <br />Function Query($query) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_query($query, $this->idCon); <br />Break; <br />Case "mysql": <br />$r = mysql_query($query, $this->idCon); <br />Break; <br />Case "pg": <br />$r = pg_exec($this->idCon, $query); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />$this->curRow[$r] = 0; <br />$this->seek[$r] = 0; <br />Return $r; <br />} <br />/************************************************************************************ <br />*移动记录指针 <br />*************************************************************************************/ <br />Function DataSeek($result, $RowNumber) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_data_seek($result, $RowNumber); <br />Break; <br />Case "mysql": <br />$r = mysql_data_seek($result, $RowNumber); <br />Break; <br />Case "pg": <br />$r = False; <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />$this->seek[$result] = (int) $RowNumber; <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取字段名 <br />*************************************************************************************/ <br />Function FieldName($result, $offset) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_field_name($result, $offset); <br />Break; <br />Case "mysql": <br />$r = mysql_field_name($result, $offset); <br />Break; <br />Case "pg": <br />$r = pg_fieldname($result, $offset); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取字段类型 <br />*************************************************************************************/ <br />Function FieldType($result, $offset) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_field_type($result, $offset); <br />Break; <br />Case "mysql": <br />$r = mysql_field_type($result, $offset); <br />Break; <br />Case "pg": <br />$r = pg_fieldtype($result, $offset); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取字段长度 <br />*************************************************************************************/ <br />Function FieldLength($result, $offset) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_field_length($result, $offset); <br />Break; <br />Case "mysql": <br />$r = mysql_field_len($result, $offset); <br />Break; <br />Case "pg": <br />$r = pg_fieldsize($result, $offset); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取数据并保存到数组,可以用数字索引方式访问数组 <br />*************************************************************************************/ <br />Function FetchRow($result, $RowNumber = 0) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_fetch_row($result); <br />Break; <br />Case "mysql": <br />$r = mysql_fetch_row($result); <br />Break; <br />Case "pg": <br />$r = pg_fetch_row($result, $RowNumber); <br />If ($r) { <br />$this->curRow[$result] = $RowNumber; <br />$this->seek[$result] = $RowNumber; <br />} <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br /> <br />/************************************************************************************ <br />*获取数据并保存到数组,可以用数字索引和关联索引的方式访问 <br />*************************************************************************************/ <br />Function FetchArray($result, $RowNumber = 0, $ResultType = 2) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_fetch_array($result); <br />Break; <br />Case "mysql": <br />$r = mysql_fetch_array($result); <br />Break; <br />Case "pg": <br />$r = pg_fetch_array($result, $RowNumber, $ResultType); <br />If ($r) { <br />$this->curRow[$result] = $RowNumber; <br />$this->seek[$result] = $RowNumber; <br />} <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取数据并保存到对象 <br />*************************************************************************************/ <br />Function FetchObject($result, $RowNumber = 0, $ResultType = 2) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_fetch_object($result); <br />Break; <br />Case "mysql": <br />$r = mysql_fetch_object($result); <br />Break; <br />Case "pg": <br />$r = pg_fetch_object($result, $RowNumber, $ResultType); <br />If ($r) { <br />$this->curRow[$result] = $RowNumber; <br />$this->seek[$result] = $RowNumber; <br />} <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取结果数据 <br />*************************************************************************************/ <br />Function Result($result, $RowNumber, $FieldName) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_result($result, $RowNumber, $FieldName); <br />Break; <br />Case "mysql": <br />$r = mysql_result($result, $RowNumber, $FieldName); <br />Break; <br />Case "pg": <br />$r = pg_result($result, $RowNumber, $FieldName); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*释放结果数据 <br />*************************************************************************************/ <br />Function FreeResult($result) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_free_result($result); <br />Break; <br />Case "mysql": <br />$r = mysql_free_result($result); <br />Break; <br />Case "pg": <br />$r = pg_freeresult($result); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取记录数量 <br />*************************************************************************************/ <br />Function RowsNumber($result) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_num_rows($result); <br />Break; <br />Case "mysql": <br />$r = mysql_num_rows($result); <br />Break; <br />Case "pg": <br />$r = pg_numrows($result); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取字段数量 <br />*************************************************************************************/ <br />Function FieldsNumber($result) <br />{ <br />Switch ($this->dbType) { <br />Case "mssql": <br />$r = mssql_num_fields($result); <br />Break; <br />Case "mysql": <br />$r = mysql_num_fields($result); <br />Break; <br />Case "pg": <br />$r = pg_numfields($result); <br />Break; <br />Default: <br />$r = False; <br />Break; <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取当前记录号(从0开始) <br />*************************************************************************************/ <br />Function CurRecNumber($result) <br />{ <br />$r = $this->curRow[$result]; <br />Return $r; <br />} <br />/************************************************************************************ <br />*获取当前行号(从1开始) <br />*************************************************************************************/ <br />Function RecordNumber($result) <br />{ <br />$cr = $this->CurRecNumber($result) + 1; <br />Return $cr; <br />} <br />/************************************************************************************ <br />*移动到第一条记录 <br />*************************************************************************************/ <br />Function MoveFirstRec($result) <br />{ <br />Switch ($this->dbType) { <br />Case "pg": <br />$r = $this->FetchRow($result, 0); <br />Break; <br />Default: <br />$rn = $this->DataSeek($result, 0); <br />If ($rn) { <br />$r = $this->FetchRow($result); <br />If ($r) $this->curRow[$result] = $this->seek[$result]; <br />} Else { <br />$r = False; <br />} <br />Break; <br />} <br />Return $r; <br />} <br />/*******************************************************************************<div>)本文来源gaodai.ma#com搞#代!码网_</div><strong>搞代gaodaima码</strong>***** <br />*移动到最后一条记录 <br />*************************************************************************************/ <br />Function MoveLastRec($result) <br />{ <br />$rs = $this->RowsNumber($result); <br />If ($rs) { <br />$rs--; <br />Switch ($this->dbType) { <br />Case "pg": <br />$r = $this->FetchRow($result, $rs); <br />Break; <br />Default: <br />$rn = $this->DataSeek($result, $rs); <br />If ($rn) { <br />$r = $this->FetchRow($result); <br />If ($r) $this->curRow[$result] = $this->seek[$result]; <br />} Else { <br />$r = False; <br />} <br />Break; <br />} <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*移动到前一条记录 <br />*************************************************************************************/ <br />Function MovePreviousRec($result) <br />{ <br />$rs = $this->CurRecNumber($result); <br />If ($rs) { <br />$rs--; <br />Switch ($this->dbType) { <br />Case "pg": <br />$r = $this->FetchRow($result, $rs); <br />Break; <br />Default: <br />$rn = $this->DataSeek($result, $rs); <br />If ($rn) { <br />$r = $this->FetchRow($result); <br />If ($r) $this->curRow[$result] = $this->seek[$result]; <br />} Else { <br />$r = False; <br />} <br />Break; <br />} <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*移动到下一条记录 <br />*************************************************************************************/ <br />Function MoveNextRec($result) <br />{ <br />$rs = $this->CurRecNumber($result); <br />$rn = $this->RowsNumber($result); <br />$rs++; <br />If ($rs != $rn) { <br />Switch ($this->dbType) { <br />Case "pg": <br />$r = $this->FetchRow($result, $rs); <br />Break; <br />Default: <br />$re = $this->FetchRow($result); <br />If ($re) { <br />$r = $re; <br />$this->curRow[$result]++; <br />$this->seek[$result] = $this->curRow[$result]; <br />} Else { <br />$r = False; <br />} <br />Break; <br />} <br />} <br />Return $r; <br />} <br />/************************************************************************************ <br />*移动到指定记录(编号从0开始) <br />*************************************************************************************/ <br />Function MoveToRec($result, $RowNumber) <br />{ <br />$rn = $this->RowsNumber($result); <br />If ($RowNumber > 0 And $RowNumber < $rn) { <br />$RowNumber--; <br />Switch ($this->dbType) { <br />Case "pg": <br />$r = $this->FetchRow($result, $RowNumber); <br />Break; <br />Default: <br />$rn = $this->DataSeek($result, $RowNumber); <br />If ($rn) { <br />$r = $this->FetchRow($result); <br />If ($r) $this->curRow[$result] = $this->seek[$result]; <br />} Else { <br />$r = False; <br />} <br />Break; <br />} <br />} <br />Return $r; <br />} <br />} <br />//********************************方法实现完毕****************************************// <br />?>
希望本文所述对大家的PHP数据库程序设计有所帮助。