"And storing username/password inside class is not a very good idea for production code."
Good idea is to store database connection settings in *.ini files but you have to restrict access to them. For example this way:
my_setting.ini:
[database]
driver = mysql
host = localhost
;port = 3306
schema = db_schema
username = user
password = secret
Database connection:
<?php
class MyPDO extends PDO
{
public function __construct($file = 'my_setting.ini')
{
if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');
$dns = $settings['database']['driver'] .
':host=' . $settings['database']['host'] .
((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
';dbname=' . $settings['database']['schema'];
parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}
}
?>
Database connection parameters are accessible via human readable ini file for those who screams even if they see one PHP/HTML/any_other command.
PDO クラス
導入
PHP とデータベースサーバの間の接続を表します。
クラス概要
PDO
PDO
{
}目次
- PDO::beginTransaction — トランザクションを開始する
- PDO::commit — トランザクションをコミットする
- PDO::__construct — データベースへの接続を表す PDO インスタンスを生成する
- PDO::errorCode — データベースハンドラにおける直近の操作に関連する SQLSTATE を取得する
- PDO::errorInfo — データベースハンドラにおける直近の操作に関連する拡張エラー情報を取得する
- PDO::exec — SQL ステートメントを実行し、作用した行数を返す
- PDO::getAttribute — データベース接続の属性を取得する
- PDO::getAvailableDrivers — 利用可能な PDO ドライバの配列を返す
- PDO::lastInsertId — 最後に挿入された行の ID あるいはシーケンスの値を返す
- PDO::prepare — 文を実行する準備を行い、文オブジェクトを返す
- PDO::query — SQL ステートメントを実行し、結果セットを PDOStatement オブジェクトとして返す
- PDO::quote — クエリ用の文字列をクオートする
- PDO::rollBack — トランザクションをロールバックする
- PDO::setAttribute — 属性を設定する
PDO
Megaloman
18-Feb-2009 03:03
18-Feb-2009 03:03
anrdaemon at freemail dot ru
22-Aug-2008 08:16
22-Aug-2008 08:16
Keep in mind, you MUST NOT use 'root' user in your applications, unless your application designed to do a database maintenance.
And storing username/password inside class is not a very good idea for production code. You would need to edit the actual working code to change settings, which is bad.
schizo_mind at hotmail dot com
28-Jul-2008 05:00
28-Jul-2008 05:00
<?php
class PDOConfig extends PDO {
private $engine;
private $host;
private $database;
private $user;
private $pass;
public function __construct(){
$this->engine = 'mysql';
$this->host = 'localhost';
$this->database = '';
$this->user = 'root';
$this->pass = '';
$dns = $this->engine.':dbname='.$this->database.";host=".$this->host;
parent::__construct( $dns, $this->user, $this->pass );
}
}
?>
