PHP中对数据库操作的封装


Posted in PHP onOctober 09, 2006

PHP中对数据库操作的封装

在动态网面设计中很多都要涉及到对数据库的操作,但是有时跟据需要而改用其它后台数据库,就需要大量修改程序。这是一件枯燥、费时而且容易出错的功作。其实我们可以用PHP中的类来实现对数据库操作的封装,从而使写出的程序在很小的改动下就可以完成后台数据库的更改。

现在我们把其封装在dbfz.inc中,其设计如下:

<?
class dbInterface{ var $dbID=1; //用于确定当前操作的数据库,当dbID为1代表MySql,当为 2代表 SQL Server,为3时为ODBC或其它。
var $dbHost; //数据库所在主机域名
var $dbUsername; //数据库用户名
var $dbPassword; //用户密码
//设置主机、用户名及密码函数
function setParameter($host,$username,$password){
$this->dbUsername=$username;
$this->dbHost=$host;
$this->dbPassword=$password;

} //联接数库函数
function dbConnect(){
switch($this->dbID)
{
case 1;
return @mysql_connect($this->dbHost,$this->dbUsername,$this->dbPassword);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}
//关闭数库函数
function dbClose($dataHandle){
switch($this->dbID)
{
case 1;
mysql_close($dataHandle);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}

//执行SQL语句函数
function dbQuery($dbName,$sql,$dbHandle){
switch($this->dbID)
{
case 1;
return @mysql_db_query($dbName,$sql,$dbHandle);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}

//检索SQL返回值的当前记录函数
function dbFetchrow($dataHandle,$offset=-1){
switch($this->dbID)
{
case 1;
@mysql_data_seek($dataHandle,$offset);
return @mysql_fetch_row($dataHandle);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}

//返回检索记录数函数
function dbNumrows($dataHandle){
switch($this->dbID)
{
case 1;
return @mysql_num_rows($dataHandle);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}

//返回检索列数函数
function dbNumcols($dataHandle){
switch($this->dbID)
{
case 1;
return @mysql_num_fields($dataHandle);
case 2;
//用支持SQL Server的函数
case 3;
//用支持ODBC的函数
}  
}
}

现把使用说明如下:

在程序中用dbInterface类生一个对象$test=new dbInterface;

设置参数
test->$dbUsername ;用户名
test->$dbPassword;密码
test->$dbHost;主机
void setParameter(string host, string username, string password);

数据库连接:dbhandle test->dbConnect();

返回值:fasle ,数据库连接错误
>0, 数据库连接句柄

数据库关闭:void test->dbClose(dbhandle);

表操作:int test->dbQuery(string databasename, string sql,dbhandle);执行SQL语句

返回值: false, SQL执行错误
>0, SQL执行正确, 同时指向SQL返回值,

数据操作:int test->dbFetchrow(dataHandle,int offset);检索SQL返回值的当前记录,成功执行后,指针移向下一条记录
int test->dbNumrows(dataHandle); 取得SQL执行后(主要为SELECT语句)获得的记录数
int test->dbNumcols(dataHandle); 取得SQL执行后(主要为SELECT语句)获得的记录字段数

现在我们发一个例了讲解:

数据库采用MQSQL:其主机名为 "localhost",用户名为"root"和密码""。
在mysql中有一个testdb数据库及其中的表table1,表包括:name和pay两个字段

-----
<HTML><HEAD>
<TITLE>test</TITLE>
</HEAD><BODY>
<P> <?php
require("testdb.inc"); //装载dbInterface类
$test = new dbInterface;//用类dbInterface生成一个对象
$test->setParameter("localhost","root","");//设置数据库参数
$db = $test->dbConnect();//连接数据库
$Query = "SELECT name,pay FROM table ";//设置SQL语句
$temp_result = $test->dbQuery("testdb",$Query,$db);//执行数据主库操作
echo "<br>";
$ls_num = $test->dbNumrows($temp_result); //取得查询结果的记录数
echo $ls_num;
echo "<br>";
if (ls_num>0 )
{
$ls_col = $test->dbNumcols($db); //取得表的列数
echo $ls_col;  
echo "<br>";
$cate_result=$test->dbFetchrow($temp_result,0);//取得记录数的第一行
$hcid=$cate_result[0];// 取得name的值
$hcate=$cate_result[1];//取得pay的值
echo $hcid;
echo "<br>";
echo $hcate;
}

?>  
<HR>
<ADDRESS></ADDRESS>
</BODY></HTML>

这就是一个简单的应用封装的类来完成对数据库的操作。如果要操作其它数据库只需要修改dbInterface类中的dbID变量即可.

PHP 相关文章推荐
谈谈PHP语法(4)
Oct 09 PHP
php防注
Jan 15 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
PHP加密解密类实例代码
Jul 20 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 #PHP
一个简洁的多级别论坛
Oct 09 #PHP
用ODBC的分页显示
Oct 09 #PHP
为查询结果建立向后/向前按钮
Oct 09 #PHP
投票管理程序
Oct 09 #PHP
用PHP和ACCESS写聊天室(九)
Oct 09 #PHP
用PHP和ACCESS写聊天室(八)
Oct 09 #PHP
You might like
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python读大数据txt
2016/03/28 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
Python通过文本和图片生成词云图
2020/05/21 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
艺术设计专业个人求职信
2014/04/10 职场文书
企业文明单位申报材料
2014/05/16 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
2015年公务员工作总结
2015/04/24 职场文书
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python