`

【转】 用PHP封装的数据库操作方法(MYSQL、ACCESS)

阅读更多
【转】 用PHP封装的数据库操作方法(MYSQL、ACCESS)
/**
* MYSQL操作类
* function:Open() 打开一个MYSQL连接,无返回值;
* function:Close() 关闭一个已打开的MYSQL连接,无返回值;
* function:Sql($sql) 执行一条SQL语句,
@param $sql SQL语句,
return 执行语句后的记录集;
* function:Rows() 获得记录的总条数,
return 记录的总条数;
* function:Get($field,$row) 获取指定记录行和指定字段的值,
@param $field 字段名称,
@param $row 记录行数,
return 当前记录字段的值;
* function:Next_row() 移动到下一条记录,无返回值;       
*/
class Mysql_odb
{
private $mysql_server;
private $mysql_db;
private $mysql_user;
private $mysql_pwd;
private $mysql_charset;
private $mysql_link;
private $mysql_rs;
private $mysql_rows;
/**
* MYSQL连接类构造函数
* @param $mysql_server_var - MYSQL服务器名
* @param $mysql_db_var - MYSQL数据库名
* @param $mysql_user_var - MYSQL用户名
* @param $mysql_pwd_var - MYSQL用户密码
* @param $mysql_charset_var - MYSQL连接编码方式
*/
function __construct()
{
global $mysql_server,$mysql_db,$mysql_user,$mysql_pwd,$mysql_charset;
$this->mysql_server = $mysql_server;
$this->mysql_db = $mysql_db;
$this->mysql_user = $mysql_user;
$this->mysql_pwd = $mysql_pwd;
$this->mysql_charset = $mysql_charset;
}

public function Open()
{
$this->mysql_link = mysql_connect($this->mysql_server,$this->mysql_user,$this->mysql_pwd) or die("mysql error:".mysql_error());
mysql_query("set names '".$this->mysql_charset."';",$this->mysql_link);
}

public function Close()
{
mysql_close($this->mysql_link);
}

public function Sql($sql)
{
mysql_select_db($this->mysql_db,$this->mysql_link);
$this->mysql_rs = mysql_query($sql,$this->mysql_link);
return $this->mysql_rs;
}

public function Rows()
{
$this->mysql_rows = 0;
if($this->mysql_rs != 1 && $this->mysql_rs != 0)
{
$this->mysql_rows = mysql_num_rows($this->mysql_rs);
}
return $this->mysql_rows;
}

public function Get($field,$row)
{
$result = mysql_result($this_>mysql_rs,$row,$field);
return $result;
}

public function Next_row()
{
return "NULL";
}

function __destruct()
{
unset($this->mysql_server);
unset($this->mysql_db);
unset($this->mysql_user);
unset($this->mysql_pwd);
unset($this->mysql_link);
unset($this->mysql_rs);
unset($this->mysql_charset);
unset($this->mysql_rows);
}
}

/**
* ACCESS操作类
* function:Open() 打开一个ACCESS连接,无返回值;
* function:Close() 关闭一个已打开的ACCESS连接,无返回值;
* function:Sql($sql) 执行一条SQL语句,
@param $sql SQL语句,
return 执行语句后的记录集;
* function:Rows() 获得记录的总条数,
return 记录的总条数;
* function:Get($field,$row) 获取指定记录行和指定字段的值,
@param $field 字段名称,
@param $row 记录行数,
return 当前记录字段的值;
* function:Next_row() 移动到下一条记录,无返回值;       
*/
class Access_odb
{
private $access_db;
private $access_user;
private $access_pwd;
private $access_str;
private $access_charset;
private $access_link;
private $access_rs;
private $access_rows;
/**
* ACCESS连接类构造函数
* @param $access_db_var - ACCESS数据库名
* @param $access_user_var - ACCESS用户名
* @param $access_pwd_var - ACCESS用户密码
* @param $access_charset_var - ACCESS连接编码方式
*/
function __construct()
{
global $access_db,$access_user,$access_pwd,$access_charset;
$this->access_db = $access_db;
$this->access_user = $access_user;
$this->access_pwd = $access_pwd;
$this->access_charset = $access_charset;
}

public function Open()
{
//$this->access_str = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".realpath($this->access_db);
$this->access_str = "DRIVER={Driver do Microsoft Access (*.mdb)};DBQ=".realpath($this->access_db);
$this->access_link = odbc_connect($this->access_str,$this->access_user,$this->access_pwd,SQL_CUR_USE_ODBC) or die("odbc error:".odbc_error());
//$this->odbc_exec($this->access_link,"set names {$this->access_charset}");   
}

public function Close()
{
odbc_close($this->access_link);
}

public function Sql($sql)
{
$re_sql = iconv($this->access_charset,"gb2312",$sql);
$this->access_rs = odbc_exec($this->access_link,$re_sql);
return $this->access_rs;
}

public function Rows()
{
$this->access_rows = 0;
if($this->access_rs != 1 && $this->access_rs != 0)
{
/**
* $this->access_rows = odbc_num_rows($this->access_rs);
* 因为ODBC驱动不支持,这段代码无法得到记录集的行数
*/
ob_start();
$this->access_rows = odbc_result_all($this->access_rs);
ob_clean();
}
return $this->access_rows;
}

/**
* get_result取结果集的值
* @param $field - 要得到值的字段名或字段编号
* @return 返回取得的值
*/
public function Get($field,$row)
{
//$rs = odbc_result($this->access_rs,$field);
$list = odbc_fetch_array($this->access_rs,$row);
$result = iconv("gb2312",$this->access_charset,$list[$field]);
return $result;
}

public function Next_row()
{
odbc_fetch_row($this->access_rs);
}

function __destruct()
{
unset($this->access_db);
unset($this->access_user);
unset($this->access_pwd);
unset($this->access_str);
unset($this->access_link);
unset($this->access_rs);
unset($this->access_charset);
unset($this->access_rows);
}
}

/**
* ACCESS操作类(COM方法)
* function:Open() 打开一个ACCESS连接,无返回值;
* function:Close() 关闭一个已打开的ACCESS连接,无返回值;
* function:Sql($sql) 执行一条SQL语句,
@param $sql SQL语句,
return 执行语句后的记录集;
* function:Rows() 获得记录的总条数,
return 记录的总条数;
* function:Get($field,$row) 获取指定记录行和指定字段的值,
@param $field 字段名称,
@param $row 记录行数,
return 当前记录字段的值;
* function:Next_row() 移动到下一条记录,无返回值;       
*/
class Access_codb
{
private $access_db;
private $access_user;
private $access_pwd;
private $access_str;
private $access_charset;
private $access_link;
private $access_rs;
private $access_rows;
private $access_array;
private $field_count;
/**
* ACCESS连接类构造函数
* @param $access_db_var - ACCESS数据库名
* @param $access_user_var - ACCESS用户名
* @param $access_pwd_var - ACCESS用户密码
* @param $access_charset_var - ACCESS连接编码方式
*/
function __construct()
{
global $access_db,$access_user,$access_pwd,$access_charset;
$this->access_db = $access_db;
$this->access_user = $access_user;
$this->access_pwd = $access_pwd;
$this->access_charset = $access_charset;
$this->access_array = array();
}

public function Open()
{
$this->access_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=".realpath($this->access_db);
$this->access_link = new COM("ADODB.Connection");
$this->access_link->Open($this->access_str); //or die("ado error:".$this->access_link->ErrorMsg());
}

public function Close()
{
$this->access_link->Close;
}

public function Sql($sql)
{
$this->access_rs = new COM("ADODB.RecordSet");
$re_sql = iconv($this->access_charset,"gb2312",$sql);
$this->access_rs->Open($re_sql,$this->access_link,1,1);
$this->field_count = $this->access_rs->Fields->Count;
$i = 0;
while(!$this->access_rs->Eof)
{
$i++;
$arr = array();
for($j = 0 ; $j < $this->field_count ; $j++)
{  
$field_name = $this->access_rs->Fields[$j]->Name;
$field_value = $this->access_rs->Fields[$j]->Value;
$field_value = iconv("gb2312",$this->access_charset,strval($field_value));
$arr[$field_name] = $field_value;
}
$this->access_array[$i] = $arr;
$this->access_rs->MoveNext();
}
return $this->access_array;
}

public function Rows()
{
$this->access_rows = $this->access_rs->RecordCount();
return $this->access_rows;
}

/**
* get_result取结果集的值
* @param $field - 要得到值的字段名或字段编号
* @return 返回取得的值
*/
public function Get($field,$row)
{
$result = $this->access_array[$row][$field];
return $result;
}

public function Next_row()
{
$this->access_rs->MoveNext();
}

function __destruct()
{
unset($this->access_db);
unset($this->access_user);
unset($this->access_pwd);
unset($this->access_str);
unset($this->access_link);
unset($this->access_rs);
unset($this->access_charset);
unset($this->access_rows);
unset($this->access_array);
unset($this->field_count);
}
}
分享到:
评论

相关推荐

    ACC转MYSQL

    "ACC转MYSQL"是指将Access(ACC)数据库转换为MySQL数据库的过程。Access是由微软开发的关系型数据库管理系统,而MySQL则是一款开源、免费的SQL数据库,广泛应用于Web应用程序。下面,我们将详细探讨这个过程中的...

    一个比较完整php访问access的类用odbc

    在提供的压缩包中,`class_access.php`是一个PHP类文件,它封装了与Access数据库进行交互的方法。下面我们将详细探讨这个类可能包含的几个关键功能: 1. **连接函数**:该类通常会有一个名为`connect`的方法,用于...

    php在数据库抽象层简单使用PDO的方法

    总结起来,本文实例通过PDO展示了如何在PHP中实现数据库抽象层,以便于在不同数据库之间切换,并且提供了安全、灵活的数据库操作方法。了解和熟练使用PDO是PHP开发人员必备的技能之一,它提高了代码的可维护性和可...

    PHP与MySQL程序设计 第四版

    8. **LDAP与PHP**:在`ch17 - PHP and LDAP`章节中,讨论了使用PHP集成 Lightweight Directory Access Protocol (LDAP) 进行用户认证和目录服务操作的方法。 9. **MySQL视图**:`ch34 - MySQL Views`章节介绍了视图...

    PHP_DAO_MYSQL php写的dao看起来还好

    `example.php`:这个文件很可能是示例代码,演示如何使用DAO和MySQL连接类来完成实际的数据库操作。它可能包含了如何实例化DAO对象、如何调用DAO方法以及如何处理返回的数据等内容。 在学习这些文件时,你需要关注...

    MySQL实用教程[郑阿奇][上机实验程序]

    - JavaBean规范:理解JavaBean的设计原则和使用方式,以及如何封装数据库操作。 - DAO(Data Access Object)模式:学习使用DAO模式来隔离业务逻辑与数据库访问。 5. **VC(Visual C++)与MySQL**: - ODBC...

    新手学PHP之数据库操作详解及乱码解决!

    在学习PHP进行数据库操作时,特别是对于初学者来说,可能会遇到一些挑战,尤其是在MySQL 4.1.x及以上版本中常见的编码问题,导致显示乱码。本文将详细介绍如何解决这些问题,并提供一个简单的数据库操作类,以简化...

    mysql工具类

    在PHP编程中,一个“工具类”通常包含了一系列静态方法,用于简化数据库操作,如连接、查询、插入、更新和删除等。例如,`db_mysql.class.php`可能就是一个这样的工具类,它封装了MySQL的数据库连接逻辑,提供了一套...

    PHP基于ORM方式操作MySQL数据库实例

    为了能够执行数据库操作,如查找、保存、删除和更新,我们需要一个DAO(Data Access Object)接口。`IBasicDAO`接口定义了这些操作: ```php interface IBasicDAO { public function findByWhere($where); public...

    NetBeans可视化Web开发之数据库应用开发

    4. **JDBC和DAO设计模式**:理解Java Database Connectivity (JDBC) API的使用,以及如何采用Data Access Object (DAO)设计模式来封装数据库操作,提高代码的可重用性和可维护性。 5. **可视化组件与数据库交互**:...

    Build Your Own Database Driven Web Site Using PHP & MySQL 4th.Edition

    - **数据库连接**:演示如何使用PHP连接MySQL数据库,并执行基本的SQL操作。 #### 四、发布MySQL数据至Web (Publishing MySQL Data on the Web) 此章节着重于如何利用PHP将存储在MySQL数据库中的数据展示在Web页面...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例013 安装MySQL数据库服务器 26 实例014 安装PHP.50 28 实例015 第4个PHP程序 30 1.5 XAMPP——Linux版PHP集成化安装包 31 实例016 XAMPP——Linux下PHP开发环境的集成化 31 实例017 Linux操作系统下启动XAMPP 32...

    PHP程序中使用adodb连接不同数据库的代码实例

    需要注意的是,在使用ADODB进行数据库操作时,需要确保数据库驱动或ODBC连接已经正确配置,以避免连接失败的问题。而且,为了安全考虑,在生产环境中连接数据库时,不应直接在代码中硬编码用户名和密码,而应该使用...

    PHP MVC 的实例

    它包含了对数据库的操作方法,如`listN`、`insert`、`delete`等,这些方法通过`DataAccess`类来与数据库交互。`Model`类的实例化时,会接收一个`DataAccess`对象的引用,这样`Model`就能通过这个引用执行SQL语句。 ...

    php网络开发完全手册

    14.3.2 MySQL的数据库操作 224 14.3.3 表的创建 225 14.4 数据类型的介绍 228 14.5 索引与唯一值的介绍 229 14.6 数据的操作 230 14.6.1 表的修改 230 14.6.2 表的删除 231 14.6.3 数据的查询 231 14.6.4 数据的插入...

    基于PHP的禅道项目管理软件ZenTaoPMS源码包.zip

    在ZenTaoPMS的源码中,我们可以看到数据库操作层通常由模型层实现,这部分代码会封装SQL语句,通过PHP的PDO(PHP Data Objects)扩展进行数据库连接和数据操作。同时,ZenTaoPMS利用了缓存技术提高性能,如使用...

    php5 中文手册 php5最新的中文手册

    5. PDO(PHP Data Objects):PDO提供了一个数据库访问抽象层,允许开发者使用统一的方式访问多种数据库,包括MySQL、SQLite、PostgreSQL等,增强了代码的可移植性。 6. SimpleXML:这个扩展允许PHP解析和操作XML...

    ASP+access博客网站的设计与实现(论文+源代码).rar

    【ASP+access博客网站的设计与实现】是一个典型的ASP...在实际开发中,可能会考虑使用更强大的数据库系统(如MySQL或SQL Server)和更高级的Web开发框架(如ASP.NET或PHP),以适应更大规模和复杂性的项目需求。

Global site tag (gtag.js) - Google Analytics