Mysql
 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();

ध्यान दें कि आप जितनी बार चाहें कनेक्ट() को कॉल कर सकते हैं और यह वर्तमान कनेक्शन का उपयोग करेगा, या यदि यह अस्तित्व में नहीं है तो एक बना देगा। यह एक अच्छी बात है ।

साथ ही, ध्यान दें कि हर बार जब आप तत्काल एक डेटाबेस ऑब्जेक्ट (नए का उपयोग करके) आप डेटाबेस से एक नया कनेक्शन बना रहे होंगे। मेरा सुझाव है कि आप अपने डेटाबेस वर्ग को 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिम्फनी 2 में तालिका में शामिल हों

  2. MySQL के लिए हटाए गए 'रूट' उपयोगकर्ता और पासवर्ड को पुनर्स्थापित करना

  3. PHP MySQL छोटी क्वेरी टाइमआउट, सीमा को 10 . पर सेट करना होगा

  4. Django + MySQL - अज्ञात एन्कोडिंग:utf8mb4

  5. केस संवेदनशील होने के लिए आप MySQL LIKE को कैसे मजबूर करते हैं?