phpリンクデータベース
2493 ワード
/**
* 。
*
* @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);
}
初期化すると、自動的にデータベースに接続されます.それからいろいろな操作ができます.