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 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
php将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
smarty简单入门实例
Nov 28 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 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 时间转换Unix时间戳代码
2010/01/22 PHP
php URL验证正则表达式
2011/07/19 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JS功能代码集锦
2016/05/04 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
仓库保管员岗位职责
2013/12/20 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
服务标语大全
2014/06/18 职场文书
人事任命通知
2015/04/20 职场文书
经费申请报告范文
2015/05/18 职场文书
爱护公物主题班会
2015/08/17 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Python中的套接字编程是什么?
2021/06/21 Python
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
小程序实现侧滑删除功能
2022/06/25 Javascript