Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106012
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-18 23:16
文章分类
文章存档

2016年(7)

2015年(20)

2014年(9)

我的朋友

分类: Mysql/postgreSQL

2015-03-07 16:38:22

今天闲来无事就把PDO的数据处理重写了一下,以方便以后自己使用
主要是为了以后的方便加入了预处理和事务的处理,还有更自由的数据方式和类型设置
如果发现有不好的地方请指出,本人将立即更正

调用方式: index.php
[php]

//********************************************
//*        Explain:用来演示数据库处理程序
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************
include_once 'DataBaseAPI.class.php';

//初始化数据类
$DataBase = DataBaseAPI::Init();

//一条SQL语句
$sql = "select * from user where user_id > ? and user_id < ?";

//将SQL传送到数据类中
$DataBase->setSql($sql);

//为上面的SQL的设置第一个二个条件的值
$DataBase->setValue(array(0,4));

/**
* 返回的数据方式,共有四种形式:
* 0 -- 关联数组形式
* 1  -- 数字索引数组形式
* 2  -- 两者数组形式都有
* 3   -- 按照对象的形式
* (默认:数字索引和数组形式都有)
*/
$DataBase->setDataMode(2);

/**
* 返回的数据类型,共有三种:
* 0 -- 最新插入到数据库的ID
* 1   -- 结果集中的列的数量
* 2  -- 语句执行后影响的行数
* 3  -- 包含了所有行的数组
* 4  -- 结果集中取出一行
* 5  -- 结果集中某一列中的数据 格式:array(5,1) 表示返回第1列的数据
* 6  -- 返回结果集中某一列的结构 格式:array(6,3) 表示返回第3列的结构
* (默认:包含了所有行的数组)
*/
$DataBase->setDataType(3);

/**
* 数据执行的工作类型,共有三种:
* 1:单条预处理执行方式
* 2:多条预处理执行方式
* 3:多条事务处理方式     *
* 默认为:单条预处理执行方式
*/
$DataBase->setWorkType(1);

//执行SQL语句并返回结果
var_dump($DataBase->Perform());

?>
[/php]

上面的数据方式、数据类型、数据执行的工作类型只有在你需要改变默认操作时才有需要调用
一般只需要:
$DataBase->setSql($sql); 
$DataBase->setValue(array(0,4));
$DataBase->Perform());
三个步聚即可

配置文件PdoConfig.php

[PHP]
//********************************************
//*        Explain:主要对数据库连接和数据执行以及获取的结果格式
//* 进行设置
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-7
//********************************************

header("Content-type:text/html; charset=utf-8");
ini_set("upload_max_filesize", "32M");
ini_set("memory_limit", "128M");
ini_set("post_max_size", "64M");
ini_set("max_execution_time", "0");
ini_set('date.timezone','Asia/Shanghai');
class PdoConfig
{
    //保存自己本身
    protected static $_Config = false;
    
    //数据其他参数配置
    protected $_DataConfig;
    
    //默认连接参数
    private $_DefaultConnect;
    
    public function __construct()
    {
        //数据库主机地址
        $this->_DefaultConnect['Db_Host'] = "localhost";
        
        //用户名称
        $this->_DefaultConnect['Db_User'] = "root";
        
        //用户对应的密码
        $this->_DefaultConnect['Db_PassWord'] = "123456";
        
        //数据库名称
        $this->_DefaultConnect['Db_DataName'] = "News";
        
        //数据库端口
        $this->_DefaultConnect['Db_Port'] = 3306;
    }
    
    //初始化
    public static function Init()
    {
        if(!self::$_Config)
        {
            self::$_Config = new PdoConfig;
        }
        
        //单一模式
        return self::$_Config;
    }
    
    /**
     * 设置连接配置,如果需要修改此默认设置
     * 只需要传一相同格式的数组进来即可
     * @param Array $Parameter
     * @return $this->_DefaultConnect
     */
    public function ConnectConfig($Parameter = false)
    {
        if(
        !empty($Parameter['Db_Host']) &&
        !empty($Parameter['Db_User']) &&
        !empty($Parameter['Db_PassWord']) &&
        !empty($Parameter['Db_DataName']) &&
        !empty($Parameter['Db_Port'])
        )
        {
            $this->_DefaultConnect = $Parameter;
        }
        
        //返回参数
        return $this->_DefaultConnect;
    }
    
    //设置数据库配置的默认参数
    public function ParameterConfig()
    {
        /**
         * 返回的数据方式,共有四种形式:
         * 0 -- 关联数组形式
         * 1 -- 数字索引数组形式
         * 2 -- 两者数组形式都有
         * 3 -- 按照对象的形式
         * (默认:2)
         */        
        $this->_DataConfig['DataMode'] = 2;
        
        /**
         * 字段名强制转换成大写或小写
         * 0: 强制列名是小写
         * 1: 列名按照原始的方式
         * 2: 强制列名为大写
         * (默认:1)
         */
         $this->_DataConfig['FieldMode'] = 1;
         
         /**
         * 错误提示方式
         * 0: 不显示错误信息,只显示错误码
         * 1: 显示警告错误
         * 2: 抛出异常
         * (默认:2)
         */         
         $this->_DataConfig['ErrorShowMode'] = 2;
         
         /**
         * 指定数据库返回的NULL值在php中对应的数值
         * 0: 不变
         * 1: 空字符转换成 NULL.
         * 2: NULL 转换成空字符
         * (默认:0)
         */         
         $this->_DataConfig['NullMode'] = 0;
         
         /**
          * 是否开启持久连接
         * 0: 关闭
         * 1: 开启.
          * (默认:0)
          */
         $this->_DataConfig['LongMode'] = 1;
         
         /**
          * 是否开启自动提交功能
         * 0: 关闭
         * 1: 开启.
          * (默认:1)
          */
         $this->_DataConfig['AutoMode'] = 1;
         
         //返回参数
         return $this->_DataConfig;
    }
}

/*
* __autoload 函数,它会在试图使用尚未被定义的类
* 时自动调用。通过调用此函数,脚本引擎在 PHP 出错
* 失败前有了最后一个机会加载所需的类
*/
function __autoload($class_name)
{
    if(file_exists($class_name.".conn.php"))
    {
        $file = $class_name.".conn.php";
    }
    
    if(file_exists($class_name.".php"))
    {
        $file = $class_name.".php";
    }
    
    if(file_exists($class_name.".class.php"))
    {
        $file = $class_name.".class.php";
    }
    
    if(!empty($file))
    {
        include_once "$file";
    }
}
?>
[/PHP]


数据库连接类

[PHP]
//********************************************
//*        Explain:数据库连接,根据配置文件中的参数进行数据库
//* 连接,连接失败即返回错误代码(代码的具体内容可以
//* 在配置文件中定制),连接成功将返回一个数据库连接对象
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-7
//********************************************

Class DataBase extends PdoConfig
{
    //配置文件
    private $_PdoConfig;
    
    //数据库连接参数
    private $_Connect;
    
    //其他配置参数
    private $_OtherConnect;
    
    //数据库连接
    private static $_DbManager;
    
    //允许将更新后的PdoConfig传进来
    public function __construct($Obj = false)
    {
        if(is_object($Obj))
        {
            $this->_PdoConfig = $Obj;
        }else{
            $this->_PdoConfig = parent::Init();
        }
        
        $this->_Connect = $this->_PdoConfig->ConnectConfig();
        
        $this->_OtherConnect = $this->_PdoConfig->ParameterConfig();
    }
        
    public function ConnectData()
    {
                if(self::$_DbManager === null)//当连接不存在时才进行连接否则使用原来的连接
                {
                        try {
                                                            
                                self::$_DbManager = new PDO(
                                "mysql:host=".$this->_Connect['Db_Host'].";dbname=".$this->_Connect['Db_DataName'].";port=".$this->_Connect['Db_Port']."",
                                $this->_Connect['Db_User'],$this->_Connect['Db_PassWord'],$this->setLongMode($this->_OtherConnect['LongMode']));
                        }
                        catch( PDOException $e )//出错提示
                        {
                            exit( $e->__toString());
                        }
                        self::$_DbManager->exec('set names \'utf8\'');//默认编码
                        
                        //设置字段显示方式
                        $this->setFieldMode($this->_OtherConnect['FieldMode']);
                        
                        //设置错误显示方式
                        $this->setErrorShowMode($this->_OtherConnect['ErrorShowMode']);
                        
                        //设置空格转换方式
                        $this->setNullMode($this->_OtherConnect['NullMode']);
                        
                        //设置自动提交方式
                        $this->setAutoMode($this->_OtherConnect['AutoMode']);                
            }
            return self::$_DbManager;
    }
           
    /**
     * 字段名强制转换成大写或小写
     * PDO::CASE_LOWER: 强制列名是小写
     * PDO::CASE_NATURAL: 列名按照原始的方式
     * PDO::CASE_UPPER: 强制列名为大写
     * (默认:列名按照原始的方式)
     */
    protected function setFieldMode($num)
    {
        $Parameter[0] = PDO::CASE_LOWER;
        $Parameter[1] = PDO::CASE_NATURAL;
        $Parameter[2] = PDO::CASE_UPPER;
        
        self::$_DbManager->setAttribute(PDO::ATTR_CASE,$Parameter[$num]);
    }
       
    /**
     * 错误提示方式
     * PDO::ERRMODE_SILENT: 不显示错误信息,只显示错误码
     * PDO::ERRMODE_WARNING: 显示警告错误
     * PDO::ERRMODE_EXCEPTION: 抛出异常
     * (默认:抛出异常)
     */
    protected function setErrorShowMode($num)
    {
        $Parameter[0] = PDO::ERRMODE_SILENT;
        $Parameter[1] = PDO::ERRMODE_WARNING;
        $Parameter[2] = PDO::ERRMODE_EXCEPTION;
        
        self::$_DbManager->setAttribute(PDO::ATTR_ERRMODE,$Parameter[$num]);
    }
    
        /**
     * 指定数据库返回的NULL值在php中对应的数值
     * PDO::NULL_NATURAL: 不变
     * PDO::NULL_EMPTY_STRING: 空字符转换成 NULL.
     * PDO::NULL_TO_STRING: NULL 转换成空字符
     * (默认:不变)
     */
    protected function setNullMode($num)
    {
        $Parameter[0] = PDO::NULL_NATURAL;
        $Parameter[1] = PDO::NULL_EMPTY_STRING;
        $Parameter[2] = PDO::NULL_TO_STRING;
        
        self::$_DbManager->setAttribute(PDO::ATTR_ORACLE_NULLS,$Parameter[$num]);
    }

    
        /**
     * 是否开启持久连接
     * (默认:开启)
     */
    protected function setLongMode($num)
    {
        $Parameter[0] = array(PDO::ATTR_PERSISTENT => TRUE);
        $Parameter[1] = array(PDO::ATTR_PERSISTENT => FALSE);
        return $Parameter[$num];
    }
    
    /**
     * 是否开启自动提交功能
     * (默认:开启)
     */
    protected  function setAutoMode($num)
    {
         $Parameter[0] = true; 
         $Parameter[1] = false; 
         
         self::$_DbManager->setAttribute(PDO::ATTR_AUTOCOMMIT,$Parameter[$num]);
    }
}
?>
[/PHP]


数据库接口类

[PHP]
//********************************************
//*        Explain:数据库对外接口,所有数据调用与执行统一使用
//* 此类接口,支持常规语句操作(select|update|insert|delete)、
//* 预处理语句以及事务处理语句.
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************
include_once 'PdoConfig.php';

class DataBaseSql
{
    protected $_Sql;
    
    protected $_SqlValue;
    
    protected $_Db;
    
    protected $_DataMode;    
    
    protected $_DataType;
    
    public function __construct()
    {
        $this->_Db = new DataBase;
        
        $this->_Db = $this->_Db->ConnectData();
        
        $this->_DataMode = PDO::FETCH_BOTH;
        
        $this->_DataType = array('fetchAll',0);
    }

    
    //设置SQL语句
    public function setSql($Sql)
    {
        $this->_Sql= $Sql;
    }
    
    //设置SQL的值
    public function setSqlValue($SqlValue)
    {
        $this->_SqlValue = $SqlValue;
    }
    
    protected function CheckSql()
    {
        if(!empty($this->_Sql) && !empty($this->_SqlValue))
        {
            for($i=0;$i_SqlValue);$i++)
            {
                if(count($this->_SqlValue[$i]) !== substr_count($this->_Sql,"?"))
                {                    
                    echo "SQL Error!
";
                    echo "Sql:   ".$this->_Sql."
Value:   ";
                    echo implode(",",$this->_SqlValue[$i]);
                    exit;
                }
            }            
          return true;
        }else{
            return false;
        }
    }
    
    /**
     * 返回的数据方式,共有四种形式:
     * PDO::FETCH_ASSOC -- 关联数组形式
     * PDO::FETCH_NUM   -- 数字索引数组形式
     * PDO::FETCH_BOTH  -- 两者数组形式都有
     * PDO::FETCH_OBJ   -- 按照对象的形式
     * (默认:数字索引和数组形式都有)
     */
    public function setDataMode($num)
    {
        $Parameter[0] = PDO::FETCH_ASSOC;
        $Parameter[1] = PDO::FETCH_NUM;
        $Parameter[2] = PDO::FETCH_BOTH;
        $Parameter[3] = PDO::FETCH_OBJ;
        
        //检测是否属于该方式范围 
        if(array_key_exists($num,$Parameter))
        {
            $this->_DataMode = $Parameter[$num];
        }
    }
    
    /**
     * 返回的数据类型,共有三种:
     * lastInsertId -- 最新插入到数据库的ID
     * columnCount   -- 结果集中的列的数量
     * rowCount  -- 语句执行后影响的行数
     * fetchAll  -- 包含了所有行的数组
     * fetch  -- 结果集中取出一行
     * fetchColumn  -- 结果集中某一列中的数据
     * getColumnMeta  -- 返回结果集中某一列的结构
     * (默认:包含了所有行的数组)
    */
   public function setDataType($DataType)
   {
        $Parameter[0] = 'lastInsertId';
        $Parameter[1] = 'columnCount';
        $Parameter[2] = 'rowCount';
        $Parameter[3] = 'fetchAll';
        $Parameter[4] = 'fetch';
        $Parameter[5] = 'fetchColumn';
        $Parameter[6] = 'getColumnMeta';
        
        if(!is_array($DataType))
        {
            $DataType = array($DataType,0);
        }
        
        if($DataType[0] == 0)
        {
            if(strpos(strtolower($this->_Sql),'insert into') === false)
            {
                  echo "错误: 仅只有 insert into 语句才能获取最新插入到数据库的ID! 请重新设置返回的数据类型" ;
                  exit;
            }
        }
        $this->_DataType = array($Parameter[$DataType[0]],$DataType[1]);
   }
    
}

interface DataManage
{
    //执行SQL语句
    public function PerformSql();
}

final Class DataBaseAPI
{
    private $_Sql;
    
    private $_SqlValue;
    
    /**
     * 返回的数据方式,共有四种形式:
     * 0 -- 关联数组形式
     * 1  -- 数字索引数组形式
     * 2  -- 两者数组形式都有
     * 3   -- 按照对象的形式
     * (默认:数字索引和数组形式都有)
    */
    private $_DataMode = 2;    
    
    /**
     * 返回的数据类型,共有三种:
     * 0 -- 最新插入到数据库的ID
     * 1   -- 结果集中的列的数量
     * 2  -- 语句执行后影响的行数
     * 3  -- 包含了所有行的数组
     * 4  -- 结果集中取出一行
     * 5  -- 结果集中某一列中的数据 格式:array(5,1) 表示返回第1列的数据
     * 6  -- 返回结果集中某一列的结构 格式:array(6,3) 表示返回第3列的结构
     * (默认:包含了所有行的数组)
    */
    private $_DataType = 3;  
    
    /**
     * 数据执行的工作类型,共有三种:
     * 1:单条预处理执行方式
     * 2:多条预处理执行方式
     * 3:多条事务处理方式     *
     * 默认为:单条预处理执行方式
     */
    private $_WorkType;
    
    private $_WorkData;
    
    //数据处理对象
    private $_WordObj;
    
    private function __construct()
    {
        //单条预处理执行方式
        $this->_WorkData[0]= 'DataBaseGeneral';
        
        //多条预处理执行方式
        $this->_WorkData[1]= 'DataBasePretreatment';
        
        //多条事务处理方式
        $this->_WorkData[2]= 'DataBaseTransaction';
    }
    
    public function Init()
    {
        return new DataBaseAPI;
    }
    
    //设置工作方式
    public function setWorkType($WorkType)
    {
        if(!array_key_exists($WorkType,$this->_WorkData))
        {
            $WorkType = 0;
        }
        
        $this->_WorkType= $WorkType;        
    }
    
    //设置数据类型
    public function setDataType($DataType)
    {
        $this->_DataType= $DataType;
    }
    
    //设置获取数据方式
    public function setDataMode($DataMode)
    {
        $this->_DataMode = $DataMode;
    }
    
    //设置SQL语句
    public function setSql($Sql)
    {
        $this->_Sql= $Sql;
    }
    
    //设置SQL的值
    public function setValue($SqlValue)
    {
        $this->_SqlValue[]= $SqlValue;
    }
    
    public function Perform()
    {
        
        $this->_WordObj = new $this->_WorkData[$this->_WorkType];            
        
        $this->_WordObj->setSql($this->_Sql);
        
        $this->_WordObj->setSqlValue($this->_SqlValue);        
        
        $this->_WordObj->setDataMode($this->_DataMode);
        
        $this->_WordObj->setDataType($this->_DataType);
        
        return $this->_WordObj->PerformSql();
    }
}
?>
[/PHP]

单条SQL预处理方式

[PHP]
//********************************************
//*        Explain:最基础的数据处理,但不包括预处理和事务处理
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************
class DataBaseGeneral extends DataBaseSql implements DataManage
{
    private $_Sth;
    
    private $_getData;
    
    //执行SQL语句
    public function PerformSql()
    {
         if(parent::CheckSql())
         {
           try{
               //绑定SQL
                $this->_Sth = $this->_Db->prepare($this->_Sql);
                
               /*
                * 循环将参数绑到上面的SQL语句中并执行,将返回的结果进行保存
                */
                for($i=0;$i_SqlValue[0]);$i++)
                {
                    $this->_Sth->bindParam($i+1,$this->_SqlValue[0][$i]);
                }
                
                $this->_Sth->execute();
                
                            @$this->_Sth->setFetchMode($this->_DataMode);
           
                                
                            if($this->_DataType[0] == 'lastInsertId')
                            {
                               $this->_getData = $this->_Db->{$this->_DataType[0]}($this->_DataType[1]);
                            }else{
                               $this->_getData = $this->_Sth->{$this->_DataType[0]}($this->_DataType[1]);
                            }
                            
           }catch (Exception $e) {
                  echo "Failed: " . $e->getMessage();
            }
         }
         return $this->_getData;
    }
    
}
?>
[/PHP]


多条预处理类

[PHP]
//********************************************
//*        Explain:预处理接口,用户传入一条SQL语句后可传入多个
//* 相同类型的条件,进行多个处理,如同时插入几条记录
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************
class DataBasePretreatment extends DataBaseSql implements DataManage
{
    private $_Sth;
    
    private $_getData = array();
    
    //执行SQL语句
    public function PerformSql()
    {
         if(parent::CheckSql())
         {
           try{
               //绑定SQL
               $this->_Sth = $this->_Db->prepare($this->_Sql);
               
               /*
                * 循环将参数绑到上面的SQL语句中并执行,将返回的结果进行保存
                */
                foreach ($this->_SqlValue as $key=>$value)
                {
                    for($i=0;$i                     {
                        $a[$i] = $value[$i];
                        if($key == 0)
                        {
                            $this->_Sth->bindParam($i+1,$a[$i]);
                        }
                    }                
                    $this->_Sth->execute();
                
                                @$this->_Sth->setFetchMode($this->_DataMode);
                                
                                if($this->_DataType[0] == 'lastInsertId')
                                {
                                    $data = $this->_Db->{$this->_DataType[0]}($this->_DataType[1]);
                                }else{
                                    $data = $this->_Sth->{$this->_DataType[0]}($this->_DataType[1]);
                                }
                                
                                /*
                                 * 如果返回的结果是非数组的形式即使用数组保存
                                 * 如果返回的结果是数组将所有的数组结果进行合并
                                 */
                                if(is_array($data))
                                {
                        $this->_getData = array_merge($this->_getData,$data);
                                }else{
                                    $this->_getData[] = $data;
                                }
                }
           }catch (Exception $e) {
                  echo "Failed: " . $e->getMessage();
            }
         }
         return $this->_getData;
    }
    
}
?>
[/PHP]

事务处理类

[PHP]
//********************************************
//*        Explain:事务处理类,只有数据库支持事务才能使用否则将
//* 有严重错误提示
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************

class DataBaseTransaction extends DataBaseSql implements DataManage
{
    private $_Sth;
    
    private $_getData;
    
    //执行SQL语句
    public function PerformSql()
    {
         if(parent::CheckSql())
         {
           try{
                 //事务开始
                $this->_Db->beginTransaction();
                
               //绑定SQL
                $this->_Sth = $this->_Db->prepare($this->_Sql);
                
               /*
                * 循环将参数绑到上面的SQL语句中并执行,将返回的结果进行保存
                */
                foreach ($this->_SqlValue as $key=>$value)
                {
                    for($i=0;$i                     {
                        $a[$i] = $value[$i];
                        if($key == 0)
                        {
                            $this->_Sth->bindParam($i+1,$a[$i]);
                        }
                    }                
                    $this->_Sth->execute();
                
                                @$this->_Sth->setFetchMode($this->_DataMode);
                
                                if($this->_DataType[0] == 'lastInsertId')
                                {
                                   $data = $this->_Db->{$this->_DataType[0]}($this->_DataType[1]);
                                }else{
                                   $data = $this->_Sth->{$this->_DataType[0]}($this->_DataType[1]);
                                }
                                
                                /*
                                 * 如果返回的结果是非数组的形式即使用数组保存
                                 * 如果返回的结果是数组将所有的数组结果进行合并
                                 */
                                if(is_array($data))
                                {
                        $this->_getData = array_merge($this->_getData,$data);
                                }else{
                                    $this->_getData[] = $data;
                                }
                }
                
              //事务处理完毕
              $this->_Db->commit();
              
           }catch (Exception $e) {
               
                   //事务强行终止
                  $this->_Db->rollBack();
                  echo "Failed: " . $e->getMessage();
            }
         }
         return $this->_getData;
    }
    
}
?>
[/PHP]

事务处理类

[PHP]
//********************************************
//*        Explain:事务处理类,只有数据库支持事务才能使用否则将
//* 有严重错误提示
//*        FileFormat:UTF-8
//*        Author:Arvin(Yangl2006)
//*        QQ:8769852
//*        By:2008-6-8
//********************************************

class DataBaseTransaction extends DataBaseSql implements DataManage
{
    private $_Sth;
    
    private $_getData;
    
    //执行SQL语句
    public function PerformSql()
    {
         if(parent::CheckSql())
         {
           try{
                 //事务开始
                $this->_Db->beginTransaction();
                
               //绑定SQL
                $this->_Sth = $this->_Db->prepare($this->_Sql);
                
               /*
                * 循环将参数绑到上面的SQL语句中并执行,将返回的结果进行保存
                */
                foreach ($this->_SqlValue as $key=>$value)
                {
                    for($i=0;$i                     {
                        $a[$i] = $value[$i];
                        if($key == 0)
                        {
                            $this->_Sth->bindParam($i+1,$a[$i]);
                        }
                    }                
                    $this->_Sth->execute();
                
                                @$this->_Sth->setFetchMode($this->_DataMode);
                
                                if($this->_DataType[0] == 'lastInsertId')
                                {
                                   $data = $this->_Db->{$this->_DataType[0]}($this->_DataType[1]);
                                }else{
                                   $data = $this->_Sth->{$this->_DataType[0]}($this->_DataType[1]);
                                }
                                
                                /*
                                 * 如果返回的结果是非数组的形式即使用数组保存
                                 * 如果返回的结果是数组将所有的数组结果进行合并
                                 */
                                if(is_array($data))
                                {
                        $this->_getData = array_merge($this->_getData,$data);
                                }else{
                                    $this->_getData[] = $data;
                                }
                }
                
              //事务处理完毕
              $this->_Db->commit();
              
           }catch (Exception $e) {
               
                   //事务强行终止
                  $this->_Db->rollBack();
                  echo "Failed: " . $e->getMessage();
            }
         }
         return $this->_getData;
    }
    
}
?>
[/PHP]

转载自:
阅读(2819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~