Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penggunaan PDO di kelas

Anda dapat membuat instance koneksi Anda ke database di kelas yang menerapkan pola tunggal. Koneksi akan dilakukan sekali dan kelas ini akan mudah diakses oleh semua objek/skrip Anda yang lain.

saya menggunakan kelas yang disebut "Inti" dalam contoh berikut;

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
}

kelas ini mengambil parameter dari kelas statis yang disebut "Config" tempat Anda dapat menyimpan konfigurasi Anda:

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

di semua skrip/objek Anda, Anda hanya perlu mendapatkan instance Core dan kemudian menanyakan 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....

Jika Anda memerlukan informasi lebih lanjut tentang singleton, lihat dokumen PHP http://php .net/manual/en/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. MEMILIH dengan beberapa kondisi WHERE pada kolom yang sama

  2. Panduan lengkap tentang cara menggunakan MySQL

  3. Database Python dan MySQL:Pengantar Praktis

  4. Cara Mengimpor dan Mengekspor File CSV Menggunakan PHP dan MySQL

  5. Cara Mendapatkan Data Minggu Ini di MySQL