pdo 操作类

466 查看

1.代码示例

<?php
namespace extend\drive;

use \PDO;
use \Exception;
use PDOException;

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 16-10-5
 * Time: 上午10:09
 */

class Db{

    protected static $_instance = null;
    protected $dbName = '';
    protected $dsn;
    protected $dbn;

    /**
     * 构造方法
     * @author mmy
     */
    public function __construct($dbHost,$dbUser,$dbPasswd,$dbName,$charSet)
    {
        try
        {
            $this->dsn = 'mysql:host='.$dbHost.';dbname='.$dbName;
            $this->dbn = new PDO($this->dsn, $dbUser, $dbPasswd);
            $this->dbn->exec('SET character_set_connection='.$charSet.', character_set_results='.$charSet.'character_set_client=binary');
        }catch(PDOException $e){
           $this->outputError($e->getMessage());
        }
    }

    /**
     * 输出错误信息
     * @author mmy
     */
    private  function outputError($errorMessage)
    {
        throw new Exception('MySql Error:'.$errorMessage);
    }

    /**
     * 单例模式
     * @author mmy
     * @ return obj
     */
    public static function getInstance($dbHost,$dbUser,$dbPasswd,$dbName,$charSet)
    {
        if(self::$_instance===null)
        {
            self::$_instance = new self($dbHost,$dbUser,$dbPasswd,$dbName,$charSet);
        }
        return self::$_instance;
    }

    /**
     * 防止克隆
     * @author mmy
     */
    private function __clone(){}

    /**
     * 调试方法
     * @author mmy
     */
    private function debug($debugInfo)
    {
        var_dump($debugInfo);
        exit();
    }

    /**
     * 执行sql语句
     * @author mmy
     *
     */
    public function execSql($sql, $debug=false)
    {
        if($debug===true)
        {
            $this->debug($sql);
        }
        $result = $this->dbn->exec($sql);
        $this->getPDOError();
        return $result;
    }

    /**
     * 捕获pdo错误消息
     * @author mmy
     */
    private function getPDOError()
    {
        if($this->dbn->errorCode() !='00000')
        {
            $arrayError = $this->dbn->errorInfo();
            $this->outputError($arrayError[2]);
        }
    }
}

循环引用目录当中的文件

// 加载所有Applications/*/start.php,以便启动所有服务
foreach(glob(__DIR__.'/Applications/*/start*.php') as $start_file)
{
    require_once $start_file;
}