首页 后端开发 php教程 php实现可用于mysql,mssql,pg数据库操作类_php技巧

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

May 16, 2016 pm 08:28 PM
mssql mysql pg 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

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
*************************************************************************************/
mDatabase 类
{
/***********************************成员变量定义***************************************/
var $dbType; // 数据库类型: mssql, mysql, pg
var $connectType; // 连接类型: c - 普通连接, p - 打开持久连接
var $idCon; // 连接号
var $curRow; // 结果中数据的当前行号
// 与指定结果标识符数组
关联 var $seek; // DataSeek 函数数组
中数据的当前行号  
/***********************************成员方法实现***************************************/
/************************************************************************************
*连接数据库的函数
*************************************************************************************/
函数 Open($dbType, $c, $connect, $username = "", $password = "")
{
$this->dbType = $dbType;
开关 ($dbType) {
案例“mssql”:
如果 ($connectType == "c") {
$idCon = mssql_connect($connect, $用户名, $密码);
} 否则 {
$idCon = mssql_pconnect($connect, $用户名, $密码);
}
休息;
案例“mysql”:
如果 ($connectType == "c") {
$idCon = mysql_connect($connect, $用户名, $密码);
} 否则 {
$idCon = mysql_pconnect($connect, $用户名, $密码);
}
休息;
案例“pg”:
如果 ($connectType == "c") {
$idCon = pg_connect($connect . " user=" . $用户名 . " 密码=" . $password);
} 否则 {
$idCon = pg_pconnect($connect . " user=" . $用户名 . " 密码=" . $password);
}
休息;
默认值:
$idCon = 0;
休息;
}
$this->idCon = $idCon;
返回$idCon;
}
/************************************************************************************
*关闭数据库连接
*************************************************************************************/
函数关闭()
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_close($this->idCon);
休息;
案例“mysql”:
$r = mysql_close($this->idCon);
休息;
案例“pg”:
$r = pg_close($this->idCon);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*选择数据库
*************************************************************************************/
函数 SelectDb($dbName)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_select_db($dbName);
休息;
案例“mysql”:
$r = mysql_select_db($dbName);
休息;
案例“pg”:
$r = 假;
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*创建查询
*************************************************************************************/
函数查询($query)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_query($query, $this->idCon);
休息;
案例“mysql”:
$r = mysql_query($query, $this->idCon);
休息;
案例“pg”:
$r = pg_exec($this->idCon, $query);
休息;
默认值:
$r = 假;
休息;
}
$this->curRow[$r] = 0;
$this->seek[$r] = 0;
返回 $r;
}
/************************************************************************************
*移动记录指针
*************************************************************************************/
函数 DataSeek($结果, $RowNumber)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_data_seek($结果, $RowNumber);
休息;
案例“mysql”:
$r = mysql_data_seek($结果, $RowNumber);
休息;
案例“pg”:
$r = 假;
休息;
默认值:
$r = 假;
休息;
}
$this->seek[$result] = (int) $RowNumber;
返回 $r;
}
/************************************************************************************
*获取字段名
*************************************************************************************/
函数 FieldName($结果, $偏移量)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_field_name($结果, $偏移量);
休息;
案例“mysql”:
$r = mysql_field_name($结果, $偏移量);
休息;
案例“pg”:
$r = pg_fieldname($结果, $偏移量);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取字段类型
*************************************************************************************/
函数 FieldType($结果, $偏移量)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_field_type($结果, $偏移量);
休息;
案例“mysql”:
$r = mysql_field_type($结果, $偏移量);
休息;
案例“pg”:
$r = pg_fieldtype($结果, $偏移量);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取字段长度
*************************************************************************************/
函数 FieldLength($结果, $偏移量)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_field_length($结果, $偏移量);
休息;
案例“mysql”:
$r = mysql_field_len($结果, $偏移量);
休息;
案例“pg”:
$r = pg_fieldsize($结果, $偏移量);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取数据并保存到数组,可以用数字索引方式访问数组
*************************************************************************************/
函数 FetchRow($结果, $RowNumber = 0)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_fetch_row($结果);
休息;
案例“mysql”:
$r = mysql_fetch_row($结果);
休息;
案例“pg”:
$r = pg_fetch_row($结果, $RowNumber);
如果 ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
 
/************************************************************************************
*获取数据并保存到数组,可以用数字索引和关联索引的方式访问
*************************************************************************************/
函数 FetchArray($result, $RowNumber = 0, $ResultType = 2)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_fetch_array($结果);
休息;
案例“mysql”:
$r = mysql_fetch_array($结果);
休息;
案例“pg”:
$r = pg_fetch_array($结果, $RowNumber, $ResultType);
如果 ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取数据并保存到对象
*************************************************************************************/
函数 FetchObject($result, $RowNumber = 0, $ResultType = 2)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_fetch_object($结果);
休息;
案例“mysql”:
$r = mysql_fetch_object($结果);
休息;
案例“pg”:
$r = pg_fetch_object($结果, $RowNumber, $ResultType);
如果 ($r) {
$this->curRow[$result] = $RowNumber;
$this->seek[$result] = $RowNumber;
}
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取结果数据
*************************************************************************************/
函数结果($结果,$RowNumber,$FieldName)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_result($结果, $RowNumber, $FieldName);
休息;
案例“mysql”:
$r = mysql_result($结果, $RowNumber, $FieldName);
休息;
案例“pg”:
$r = pg_result($结果, $RowNumber, $FieldName);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*释放结果数据
*************************************************************************************/
函数 FreeResult($结果)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_free_result($结果);
休息;
案例“mysql”:
$r = mysql_free_result($结果);
休息;
案例“pg”:
$r = pg_freeresult($结果);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取记录数量
*************************************************************************************/
函数 RowsNumber($结果)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_num_rows($结果);
休息;
案例“mysql”:
$r = mysql_num_rows($结果);
休息;
案例“pg”:
$r = pg_numrows($结果);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取字段数量
*************************************************************************************/
函数字段编号($结果)
{
开关 ($this->dbType) {
案例“mssql”:
$r = mssql_num_fields($结果);
休息;
案例“mysql”:
$r = mysql_num_fields($结果);
休息;
案例“pg”:
$r = pg_numfields($结果);
休息;
默认值:
$r = 假;
休息;
}
返回 $r;
}
/************************************************************************************
*获取当前记录号(从0开始)
*************************************************************************************/
函数 CurRecNumber($结果)
{
$r = $this->curRow[$结果];
返回 $r;
}
/************************************************************************************
*获取当前行号(从1开始)
*************************************************************************************/
函数 RecordNumber($结果)
{
$cr = $this->CurRecNumber($result) 1;
返回$cr;
}
/******************************************************** **********************************
*移动到第一条记录
****************************************************** **********************************/
函数 MoveFirstRec($结果)
{
开关 ($this->dbType) {
案例“pg”:
$r = $this->FetchRow($result, 0);
休息;
默认值:
$rn = $this->DataSeek($result, 0);
如果 ($rn) {
$r = $this->FetchRow($result);
如果 ($r) $this->curRow[$result] = $this->seek[$result];
} 否则 {
$r = 假;
}
休息;
}
返回 $r;
}
/************************************************************************************
*移动到最后一条记录
*************************************************************************************/
函数 MoveLastRec($结果)
{
$rs = $this->RowsNumber($result);
如果 ($rs) {
$rs--;
开关 ($this->dbType) {
案例“pg”:
$r = $this->FetchRow($result, $rs);
休息;
默认值:
$rn = $this->DataSeek($result, $rs);
如果 ($rn) {
$r = $this->FetchRow($result);
如果 ($r) $this->curRow[$result] = $this->seek[$result];
} 否则 {
$r = 假;
}
休息;
}
}
返回 $r;
}
/************************************************************************************
*移动到前一条记录
*************************************************************************************/
函数 MovePreviousRec($结果)
{
$rs = $this->CurRecNumber($result);
如果 ($rs) {
$rs--;
开关 ($this->dbType) {
案例“pg”:
$r = $this->FetchRow($result, $rs);
休息;
默认值:
$rn = $this->DataSeek($result, $rs);
如果 ($rn) {
$r = $this->FetchRow($result);
如果 ($r) $this->curRow[$result] = $this->seek[$result];
} 否则 {
$r = 假;
}
休息;
}
}
返回 $r;
}
/************************************************************************************
*移动到下一条记录
*************************************************************************************/
函数 MoveNextRec($结果)
{
$rs = $this->CurRecNumber($result);
$rn = $this->RowsNumber($result);
$RS;
如果 ($rs != $rn) {
开关 ($this->dbType) {
案例“pg”:
$r = $this->FetchRow($result, $rs);
休息;
默认值:
$re = $this->FetchRow($result);
如果 ($re) {
$r = $re;
$this->curRow[$结果] ;
$this->seek[$result] = $this->curRow[$result];
} 否则 {
$r = 假;
}
休息;
}
}
返回 $r;
}
/************************************************************************************
*移动到指定记录(编号从0开始)
*************************************************************************************/
函数 MoveToRec($结果, $RowNumber)
{
$rn = $this->RowsNumber($result);
如果 ($RowNumber > 0 且 $RowNumber $RowNumber--;
开关 ($this->dbType) {
案例“pg”:
$r = $this->FetchRow($result, $RowNumber);
休息;
默认值:
$rn = $this->DataSeek($result, $RowNumber);
如果 ($rn) {
$r = $this->FetchRow($result);
如果 ($r) $this->curRow[$result] = $this->seek[$result];
} 否则 {
$r = 假;
}
休息;
}
}
返回 $r;
}
}
//********************************方法实现完毕****************************************//
?>

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1676
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
session_start()函数的意义是什么? session_start()函数的意义是什么? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

给MySQL表添加和删除字段的操作步骤 给MySQL表添加和删除字段的操作步骤 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,删除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段时,需指定位置以优化查询性能和数据结构;删除字段前需确认操作不可逆;使用在线DDL、备份数据、测试环境和低负载时间段修改表结构是性能优化和最佳实践。

如何使用MySQL的函数进行数据处理和计算 如何使用MySQL的函数进行数据处理和计算 Apr 29, 2025 pm 04:21 PM

MySQL函数可用于数据处理和计算。1.基本用法包括字符串处理、日期计算和数学运算。2.高级用法涉及结合多个函数实现复杂操作。3.性能优化需避免在WHERE子句中使用函数,并使用GROUPBY和临时表。

MySQL批量插入数据的高效方法 MySQL批量插入数据的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显着提升数据库操作效率。

作曲家:PHP开发人员的软件包经理 作曲家:PHP开发人员的软件包经理 May 02, 2025 am 12:23 AM

Composer是PHP的依赖管理工具,通过composer.json文件管理项目依赖。1)解析composer.json获取依赖信息;2)解析依赖关系形成依赖树;3)从Packagist下载并安装依赖到vendor目录;4)生成composer.lock文件锁定依赖版本,确保团队一致性和项目可维护性。

与其他关系数据库相比,使用MySQL的优点是什么? 与其他关系数据库相比,使用MySQL的优点是什么? May 01, 2025 am 12:18 AM

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

如何分析MySQL查询的执行计划 如何分析MySQL查询的执行计划 Apr 29, 2025 pm 04:12 PM

使用EXPLAIN命令可以分析MySQL查询的执行计划。1.EXPLAIN命令显示查询的执行计划,帮助找出性能瓶颈。2.执行计划包括id、select_type、table、type、possible_keys、key、key_len、ref、rows和Extra等字段。3.根据执行计划,可以通过添加索引、避免全表扫描、优化JOIN操作和使用覆盖索引来优化查询。

Laravel 环境搭建与基础配置(Windows/Mac/Linux) Laravel 环境搭建与基础配置(Windows/Mac/Linux) Apr 30, 2025 pm 02:27 PM

在不同操作系统上搭建Laravel环境的步骤如下:1.Windows:使用XAMPP安装PHP和Composer,配置环境变量,安装Laravel。2.Mac:使用Homebrew安装PHP和Composer,安装Laravel。3.Linux:使用Ubuntu更新系统,安装PHP和Composer,安装Laravel。每个系统的具体命令和路径有所不同,但核心步骤一致,确保顺利搭建Laravel开发环境。

See all articles