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数据库程序设计有所帮助。