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 获取远程网页内容的函数
Sep 08 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
非常重要的php正则表达式详解
Jan 04 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
解决php extension 加载顺序问题
Aug 16 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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留言本实例代码
2010/05/09 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
js Dialog 实践分享
2012/10/22 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python实现计算倒数的方法
2015/07/11 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
信号生成及DFT的python实现方式
2020/02/25 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
GUESS德国官网:美国牛仔服装品牌
2017/02/14 全球购物
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
我爱我校演讲稿
2014/05/21 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
新年寄语2016
2015/08/17 职场文书
修辞手法有哪些?
2019/08/29 职场文书
导游词之韩国济州岛
2019/10/28 职场文书