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数据库操作类代码如下:

代码如下:
/*成员方法实现*****/
/****
*连接数据库的函数
*****/
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数据库程序设计有所帮助。

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...