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文件下载类
Dec 06 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
PHP小教程之实现双向链表
Jun 12 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
PHP哈希表实现算法原理解析
Dec 11 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
PHP递归创建多级目录
2015/11/05 PHP
php强制下载文件函数
2016/08/24 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
python转换摩斯密码示例
2014/02/16 Python
讲解Python中的标识运算符
2015/05/14 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
django session完成状态保持的方法
2018/11/27 Python
Python requests设置代理的方法步骤
2020/02/23 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
销售高级职员求职信
2013/10/29 职场文书
创业计划书六个要素
2013/12/26 职场文书
好家长事迹材料
2014/01/23 职场文书
高中打架检讨书
2014/02/13 职场文书
运动会入场词60字
2014/02/15 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python