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 相关文章推荐
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
php格式化json函数示例代码
May 12 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
Laravel实现批量更新多条数据
Apr 06 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
2007/04/20 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
跟老齐学Python之永远强大的函数
2014/09/14 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
python绘制雷达图实例讲解
2021/01/03 Python
Python实现简单的2048小游戏
2021/03/01 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
小学绿色学校申报材料
2014/08/23 职场文书