php书写的数据库操作类

   本文教你使用php书写一个通用的数据库操作了,文件目录层次如下:
       -----DbFactory.class.php    数据库工厂类,用于生成数据库操作对象(与数据库类型无关)
       -----DbParent.class.php     数据库操作抽象基类,不同类型数据库操作类必需继承该类
       -----drivers/DbMysql.class.php  MySql数据库操作类,若需要扩展其他类型数据库则可以模仿该类进行书写具体数据库操作类


   源码在附件中,可直接下载使用,本文中只提供类的概述,具体实现参考附件


   1.一个数据库工厂类,用于根据指定的配置生成不同类型数据库操作对象,该类的概述如下:
       class DbFactory {
           /**
            * 生成并返回指定的数据库操作对象
            *  mixed $dbConfig : 数据库配置,可以为数组或者为如下格式的字符串
            *    数据库类型://用户名:密码@主机:端口/数据库名  
            *    如:  mysql://root:root@127.0.0.1:3306/mydb
           */
           static function instance($dbConfig);

           //获取所有数据库操作对象
           static function getAllInstances();
       }

   2. 数据库抽象基类,包含所有不同类型数据库的共用操作
       abstract class DbParent {
               //抽象方法,子类必需实现

               //数据库连接,返回true或者false;数据库操作对象放置在$this->dh中
               abstract function connect();
               abstract function disConnect(); //断开数据库连接
               abstract function setDbName($dbname); //指定使用的数据库名称

               //执行SQL语句,返回$this对象,结果集存放在$this->result中

               abstract function execSQL($sql);

               //获取1行结果集类似mysql_fetch_assoc函数

               abstract function fetchArray($result);      

               //构造函数设置数据库配置,并连接  
               public function __construct($dbConfig, $cs = 'UTF8');

               //查询SQL语句,返回结果集数组否则false/array()
               public function select($sql);

               //插入SQL语句,$data为1维数组
               public function insert($table, $data);

               //更新SQL语句,$data为1维数组,$whereSql为字符串
               public function update($table, $data, $whereSql = 1);
                 
               //删除SQL语句
               public function delete($table, $whereSql);

               //解析参数(可覆盖),默认只返回$this
               public function parseDbConfig();

               //解析结果集,返回数组或者boolean型数据
               public function parseResult($result);

               //设置数据库配置(数据库类型, 主机,端口,用户名,密码, 默认数据库等)
               public function setDbConfig($dbConfig);

               //设置字符集
               public function setCharset($cs = 'UTF8');

               //获取数据库配置
               public function getDbConfig();

               //获取数据库类型(全部小写)
               public function getDbType();

               //判断是否成功连接数据库
               public function isOk();

               //得到未解析的结果集
               public function getResult();

               //获取执行SQL语句
               public function getSql();

               //获取错误信息
               public function getError();

               //获取当前操作的数据库
               public function getDbName();

               //获取字符集
               public function getCharset();

                /*
                 *  析构函数:断开连接,释放资源
                 */
               public function __destruct() ;
       }    

   3.具体数据库操作类实现,如Mysql
       //Mysql操作类
       class DbMysql extends DbParent {

               //数据库连接
               function connect();
               

               //断开数据库连接

               function disConnect();


               //执行SQL语句,结果存放在$this->result中,返回$this对象

               function execSQL($sql);


               //指定使用的数据库名称

               function setDbName($dbname);

               //获取1条结果集
               function fetchArray($result);
       }

   4. 使用示例:    
       require_once(dirname(__FILE__) . '/DbFactory.class.php');
       $dbConfig = 'mysql://root:huangyandong@127.0.0.1:3306/app_';
       $dh = DbFactory::instance($dbConfig);
       var_dump($dh->select("SHOW DATABASES"));