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

別のクラスのMySQLデータベース構成

    期待どおりに機能するようにクラスを変更しました:

    <?php
    class Database
    {
        var $conn = null;
        var $config = array(
            'username' => 'someuser',
            'password' => 'somepassword',
            'hostname' => 'some_remote_host',
            'database' => 'a_database'
        );
    
        function __construct() {
            $this->connect();
        }
    
        function connect() {
            if (is_null($this->conn)) {
                $db = $this->config;
                $this->conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
                if(!$this->conn) {
                    die("Cannot connect to database server"); 
                }
                if(!mysql_select_db($db['database'])) {
                    die("Cannot select database");
                }
            }
            return $this->conn;
        }
    }
    

    使用法:

    $db = new Database();
    $conn = $db->connect();
    

    connect()は何度でも呼び出すことができ、現在の接続を使用するか、存在しない場合は作成することに注意してください。これは良いことです 。

    また、インスタンス化するたびに注意してください データベースオブジェクト(newを使用)データベースへの新しい接続を作成します。データベースクラスをSingleton として実装することを検討することをお勧めします。 または、レジストリ に保存します グローバルアクセス用。

    汚い方法でそれを実行して、$GLOBALSに押し込むこともできます。

    編集

    シングルトンパターンを実装するためにクラスを自由に変更し、PHP5のOOP規則に従いました。

    <?php
    class Database
    {
        protected static $_instance = null;
    
        protected $_conn = null;
    
        protected $_config = array(
            'username' => 'someuser',
            'password' => 'somepassword',
            'hostname' => 'some_remote_host',
            'database' => 'a_database'
        );
    
        protected function __construct() {
        }
    
        public static function getInstance()
        {
            if (null === self::$_instance) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }
    
        public function getConnection() {
            if (is_null($this->_conn)) {
                $db = $this->_config;
                $this->_conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
                if(!$this->_conn) {
                    die("Cannot connect to database server"); 
                }
                if(!mysql_select_db($db['database'])) {
                    die("Cannot select database");
                }
            }
            return $this->_conn;
        }
    
        public function query($query) {
            $conn = $this->getConnection();
            return mysql_query($query, $conn);
        }
    }
    

    使用法:

    $res = Database::getInstance()->query("SELECT * FROM foo;");
    

    または

    $db = Database::getInstance();
    $db->query("UPDATE foo");
    $db->query("DELETE FROM foo");
    


    1. 純粋なvbscriptを使用してmysql5.0データベースに接続しますか?

    2. WindowsでPerlのDBIモジュールを使用してMSSQLデータベースに接続するにはどうすればよいですか?

    3. テーブルの外部キー関係を照会する

    4. MySQLは、過去12か月の数量を月ごとにグループ化して取得します