php实现可用于mysql,mssql,pg数据库操作类


Posted in PHP onDecember 13, 2014

本文实例讲述了可用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: 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); 

If ($rn) { 

$r = $this->FetchRow($result); 

If ($r) $this->curRow[$result] = $this->seek[$result]; 

} Else { 

$r = False; 

} 

Break; 

} 

} 

Return $r; 

} 

} 

//********************************方法实现完毕****************************************// 

?>

希望本文所述对大家的PHP数据库程序设计有所帮助。

PHP 相关文章推荐
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
PHP系统命令函数使用分析
Jul 05 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
php实现在线考试系统【附源码】
Sep 18 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
PHP中Memcache操作类及用法实例
Dec 12 #PHP
PHP实现PDO的mysql数据库操作类
Dec 12 #PHP
PHP实现的sqlite数据库连接类
Dec 12 #PHP
php+mysql数据库实现无限分类的方法
Dec 12 #PHP
PHP中if和or运行效率对比
Dec 12 #PHP
php实现高效获取图片尺寸的方法
Dec 12 #PHP
CI框架中cookie的操作方法分析
Dec 12 #PHP
You might like
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php写的AES加密解密类分享
2014/06/20 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
JS库之Waypoints的用法详解
2017/09/13 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
python区块及区块链的开发详解
2019/07/03 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
通过实例解析python and和or使用方法
2020/11/14 Python
python装饰器代码深入讲解
2021/03/01 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
公共场所标语
2014/06/30 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
青岛导游词
2015/02/12 职场文书
学校团代会开幕词
2016/03/04 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python