php数据库操作类,可用mysql,mssql,pg
文章分享的这篇文章是因为这篇文章数据库操作类可用mysql,mssql,pg三种数据库,你只要作任何修改就可以方便的改变你数据库的类型.
函数清单,索引:
php数据库操作类代码如下:
<?PHP /********************************************************************************** 此类将数据库操作封装,具有良好的可移植性,针对数据库:mysql,mssql,pg *原作者:Andrzej Manczyk 整理:玉面修罗 E-mail/msn:xiuluo-999@163测试数据 时间:2006-12-20* ************************************************************************************ // -函数清单 索引: // - 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, mysql, 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 , $username , $password ); } Break; Case "mysql" : If ( $connectType == "c" ) { $idCon = mysql_connect( $connect , $username , $password ); } Else { $idCon = mysql_pconnect( $connect , $username , $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 , $RowNumber = 0, $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 , $RowNumber , $ResultType ); If ( $r ) { $this ->curRow[ $result ] = $RowNumber ; $this ->seek[ $result ] = $RowNumber ; } Break; Default: $r = False; Break; } Return $r ; } /************************************************************************************ *获取结果数据 *************************************************************************************/ Function Result( $result , $RowNumber , $FieldName ) { Switch ( $this ->dbType) { Case "mssql" : $r = mssql_result( $result , $RowNumber , $FieldName ); Break; Case "mysql" : $r = mysql_result( $result , $RowNumber , $FieldName ); Break; Case "pg" : $r = pg_result( $result , $RowNumber , $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 ); 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 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 ); //开源代码phpfensi测试数据 If ( $rn ) { $r = $this ->FetchRow( $result ); If ( $r ) $this ->curRow[ $result ] = $this ->seek[ $result ]; } Else { $r = False; } Break; } } Return $r ; } } //********************************方法实现完毕****************************************// ?>查看更多关于php数据库操作类,可用mysql,mssql,pg - php类库的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29511