zoukankan      html  css  js  c++  java
  • php链接数据库

    /**
     * 连接数据库。
     *
     * @param  string  $dbOption  数据库配置项。
     * @return void
     */
    final public function connection($dbOption = '')
    {
        if (strlen($dbOption) > 0) {
            $this->dbOption = $dbOption;
        }
        $registryName = "mysql_{$this->dbOption}";
        // [1] 传统初始化MySQL方式。
        $config = App::getDbConfig();
        if (!isset($config[$dbOption])) {
            throw new DbException("MySQL 配置:{$dbOption} 未设置");
        }
        $config   = $config[$dbOption];
        $host     = $config['host'];
        $port     = $config['port'];
        $username = $config['user'];
        $password = $config['pwd'];
        $charset  = $config['charset'];
        $dbname   = $config['dbname'];
        $pconnect = $config['pconnect'];
        $dsn      = "mysql:dbname={$dbname};host={$host};port={$port}";
        $dbh      = new PDO($dsn, $username, $password, [PDO::ATTR_PERSISTENT => $pconnect]);
        // MySQL操作出错,抛出异常。
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);
        $dbh->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
        // 以关联数组返回查询结果。
        $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $dbh->query("SET NAMES {$charset}");
        self::$connectedIdent[$registryName] = $dbOption; // 之所以以连接标识做键,是避免多次连接导致持续的增加。
        Registry::set($registryName, $dbh);
    }
    

    配置如下

    ; MySQL 配置
    mysql.default.host     = 127.0.0.1
    mysql.default.port     = 3306
    mysql.default.user     = xxx
    mysql.default.pwd      = xxx
    mysql.default.dbname   = xxx
    mysql.default.charset  = utf8
    mysql.default.pconnect = false
    
    /**
     * 构造方法。
     *
     * @param  string  $dbOption  数据库配置项。
     * @return void
     */
    public function __construct($dbOption = '')
    {
        if (strlen($dbOption) > 0) {
            $this->dbOption = $dbOption;
            $this->changeDb($this->dbOption);
        }
    }
    
    /**
     * 切换数据库连接。
     *
     * @param  string  $dbOption  数据库配置项。
     * @return void
     */
    final public function changeDb($dbOption)
    {
        $registryName = "mysql_{$dbOption}";
        if (Registry::has($registryName) === false) {
            $this->connection($dbOption);
        }
        $this->dbConnection = Registry::get($registryName);
    }
    

    初始化的时候,自动连接数据库。
    然后就可以进行各种操作了。

  • 相关阅读:
    【css】rem及其替换方案
    【css】如何实现环形进度条
    【js】我们需要无限滚动列表吗?
    【js】再谈移动端的模态框实现
    【js】callback时代的变更
    【js】为什么要使用react+redux
    【js】JavaScript parser实现浅析
    【css】回想下经典的布局
    【JS】温故知新: 从parseInt开始
    【渲染原理】浏览器渲染原理的个人整理
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/12145641.html
Copyright © 2011-2022 走看看