Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कक्षाओं में पीडीओ का प्रयोग

आप सिंगलटन पैटर्न को लागू करने वाली कक्षा में डेटाबेस से अपने कनेक्शन को तुरंत चालू कर सकते हैं। कनेक्शन एक बार किया जाएगा और यह वर्ग आपकी अन्य सभी वस्तुओं/स्क्रिप्ट द्वारा आसानी से पहुंच योग्य होगा।

मैं निम्नलिखित उदाहरण में "कोर" नामक एक वर्ग का उपयोग करता हूं;

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
}

यह वर्ग "कॉन्फ़िगरेशन" नामक एक स्थिर वर्ग से पैरामीटर लेता है जहाँ आप अपने कॉन्फ़िगरेशन को संग्रहीत कर सकते हैं:

<?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');

आपकी सभी लिपियों/वस्तुओं में आपको बस कोर का उदाहरण प्राप्त करना होगा और फिर डीबी को क्वेरी करना होगा

$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/hi/language.oop5.patterns.php



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ALTER DATABASE Syntax - DBMS द्वारा सूचीबद्ध

  2. प्रॉक्सीएसक्यूएल-व्यवस्थापक विकल्प - क्लस्टरकंट्रोल प्रॉक्सीएसक्यूएल जीयूआई

  3. मैं mySQL डेटाबेस के साथ ठीक से इंटरैक्ट करने के लिए अपना लॉगिन फॉर्म प्राप्त नहीं कर सकता

  4. Neo4j - Cypher . का उपयोग करके संबंध बनाएं

  5. MyISAM बनाम InnoDB