sql >> データベース >  >> RDS >> Mysql

クラスでのPDOの使用

    シングルトンパターンを実装するクラスでデータベースへの接続をインスタンス化できます。接続は1回行われ、このクラスには他のすべてのオブジェクト/スクリプトから簡単にアクセスできます。

    次の例では「Core」というクラスを使用しています。

    class Core
    {
        public $dbh; // handle of the db connexion
        private static $instance;
    
        private function __construct()
        {
            // building data source name from config
            $dsn = 'pgsql:host=' . Config::read('db.host') .
                   ';dbname='    . Config::read('db.basename') .
                   ';port='      . Config::read('db.port') .
                   ';connect_timeout=15';
            // getting DB user from config                
            $user = Config::read('db.user');
            // getting DB password from config                
            $password = Config::read('db.password');
    
            $this->dbh = new PDO($dsn, $user, $password);
        }
    
        public static function getInstance()
        {
            if (!isset(self::$instance))
            {
                $object = __CLASS__;
                self::$instance = new $object;
            }
            return self::$instance;
        }
    
        // others global functions
    }
    

    このクラスは、構成を保存できる「Config」と呼ばれる静的クラスからパラメーターを取得します。

    <?php
    class Config
    {
        static $confArray;
    
        public static function read($name)
        {
            return self::$confArray[$name];
        }
    
        public static function write($name, $value)
        {
            self::$confArray[$name] = $value;
        }
    
    }
    
    // db
    Config::write('db.host', '127.0.0.1');
    Config::write('db.port', '5432');
    Config::write('db.basename', 'mydb');
    Config::write('db.user', 'myuser');
    Config::write('db.password', 'mypassword');
    

    すべてのスクリプト/オブジェクトで、Coreのインスタンスを取得してから、DBにクエリを実行する必要があります

    $sql = "select login, email from users where id = :id";
    
    try {
        $core = Core::getInstance();
        $stmt = $core->dbh->prepare($sql);
        $stmt->bindParam(':id', $this->id, PDO::PARAM_INT);
    
        if ($stmt->execute()) {
            $o = $stmt->fetch(PDO::FETCH_OBJ);
            // blablabla....
    

    シングルトンの詳細については、PHPドキュメント http://phpを参照してください。 .net / manual / en / language.oop5.patterns.php



    1. AutoMySQLBackupを使用してMySQLデータベースをバックアップする方法

    2. Oracleの日時形式要素のリスト

    3. .NET / SQLのテーブル名をパラメータ化しますか?

    4. データベースのサブセット化–IRIVoracityでの方法