`

【转】 用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. **可视化组件与数据库交互**:...

    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...

    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程序中使用adodb连接不同数据库的代码实例

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

    PHP MVC 的实例

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

    基于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),以适应更大规模和复杂性的项目需求。

    emp.rar_emp分页代码_fenyepage.class.php_php html5_sqlhelper.class.ph

    `sqlhelper.class.php`可能是封装了数据库操作的工具类,提供了一种安全、便捷的方式来执行SQL语句。它可能包含了如`query()`、`insert()`、`update()`和`delete()`等方法,用于CRUD(创建、读取、更新、删除)操作...

Global site tag (gtag.js) - Google Analytics