php实现可用于mysql,mssql,pg数据库操作类
本文实例讲述了可用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 /********************************************************************************** 此类将数据库操作封装,具有良好的可移植性,针对数据库: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 ************************************************************************************ //Inputs: //-dbType:databasestype:mssql,mysql,pg //-connectType:connectiontype:c-commonconnection, //p-openpersistentconnection //-connect:forMSSQLServer-servername, //forMySQL-hostname[:port][:/path/to/socket], //forPostgreSQL-host,port,tty,options, //dbname(withoutusernameandpassword) //-username //-password //-dbName:databasename //-query:SQLquery //-result:resultsetidentifier //-RowNumber: //-offset:fieldidentifier //-ResultType:aconstantandcantakethefollowingvalues:PGSQL_ASSOC,PGSQL_NUM,andPGSQL_BOTH //-FieldName // //Returns: //-result:resultsetidentifier //-connectlinkidentifier //-recordnumber(startingat0:CurrRecNumberorstartingat1:RecordNumber) //-numberoffieldsinthespecifiedresultset //-numberofrowsinthespecifiedresultset *************************************************************************************/ ClassmDatabase { /***********************************成员变量定义***************************************/ var$dbType;//数据库类型:mssql,mysql,pg var$connectType;//连接类型:c-commonconnection,p-openpersistentconnection var$idCon;//连接号 var$curRow;//currentrownumberofdatafromtheresult //associatedwiththespecifiedresultidentifierarray var$seek;//currentrownumberofdatafromDataSeekfunctionarray /***********************************成员方法实现***************************************/ /************************************************************************************ *连接数据库的函数 *************************************************************************************/ FunctionOpen($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; } /************************************************************************************ *关闭数据库连接 *************************************************************************************/ FunctionClose() { 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; } /************************************************************************************ *选择数据库 *************************************************************************************/ FunctionSelectDb($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; } /************************************************************************************ *创建查询 *************************************************************************************/ FunctionQuery($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; } /************************************************************************************ *移动记录指针 *************************************************************************************/ FunctionDataSeek($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; } /************************************************************************************ *获取字段名 *************************************************************************************/ FunctionFieldName($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; } /************************************************************************************ *获取字段类型 *************************************************************************************/ FunctionFieldType($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; } /************************************************************************************ *获取字段长度 *************************************************************************************/ FunctionFieldLength($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; } /************************************************************************************ *获取数据并保存到数组,可以用数字索引方式访问数组 *************************************************************************************/ FunctionFetchRow($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; } /************************************************************************************ *获取数据并保存到数组,可以用数字索引和关联索引的方式访问 *************************************************************************************/ FunctionFetchArray($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; } /************************************************************************************ *获取数据并保存到对象 *************************************************************************************/ FunctionFetchObject($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; } /************************************************************************************ *获取结果数据 *************************************************************************************/ FunctionResult($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; } /************************************************************************************ *释放结果数据 *************************************************************************************/ FunctionFreeResult($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; } /************************************************************************************ *获取记录数量 *************************************************************************************/ FunctionRowsNumber($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; } /************************************************************************************ *获取字段数量 *************************************************************************************/ FunctionFieldsNumber($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开始) *************************************************************************************/ FunctionCurRecNumber($result) { $r=$this->curRow[$result]; Return$r; } /************************************************************************************ *获取当前行号(从1开始) *************************************************************************************/ FunctionRecordNumber($result) { $cr=$this->CurRecNumber($result)+1; Return$cr; } /************************************************************************************ *移动到第一条记录 *************************************************************************************/ FunctionMoveFirstRec($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; } /************************************************************************************ *移动到最后一条记录 *************************************************************************************/ FunctionMoveLastRec($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; } /************************************************************************************ *移动到前一条记录 *************************************************************************************/ FunctionMovePreviousRec($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; } /************************************************************************************ *移动到下一条记录 *************************************************************************************/ FunctionMoveNextRec($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开始) *************************************************************************************/ FunctionMoveToRec($result,$RowNumber) { $rn=$this->RowsNumber($result); If($RowNumber>0And$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数据库程序设计有所帮助。