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中目录,文件操作详谈
Mar 19 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
php数组合并的二种方法
Mar 21 PHP
php中curl和file_get_content的区别
May 10 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 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
图解上海144收音机
2021/03/02 无线电
多重?l件?合查?(二)
2006/10/09 PHP
UCenter Home二次开发指南
2009/05/28 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
php的socket编程详解
2016/11/20 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
PDO::errorInfo讲解
2019/01/28 PHP
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
js继承实现方法详解
2016/12/16 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
Django实现文件上传和下载功能
2019/10/06 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
大学生饮食连锁店创业计划书
2014/01/17 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
大学生赌博检讨书
2014/09/22 职场文书
2014年采购员工作总结
2014/11/18 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
停电调休通知
2015/04/16 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
员工试用期工作总结
2019/06/20 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python