2015-08-15 58 views
0

我有DB連接代碼:

define('DBDRIVER', 'mysql'); 
    define("DBHOST", "localhost"); 
    define("DBNAME", "dbname"); 
    define("DBUSER", "username"); 
    define("DBPASS", "password"); 

    $dboptions = array(
     PDO::ATTR_PERSISTENT => FALSE, 
     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
    ); 

    try {  
     $PDO = new PDO(DBDRIVER . ':host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $dboptions); 
     $PDO -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $PDO -> setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE); 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e -> getMessage(); 
    } 

,並有一個類。

如何在我的課堂中使用PDO變量? 我可以使用全局變量但不能在課堂上工作嗎? 有任何系統可以在類中使用此PDO變量(不要爲PDO連接定義任何類或構造函數)?

+0

檢查此答案:http://stackoverflow.com/questions/20019812/database-connection-with-pdo-and-singleton-class(搜索PDO單身人士)。 –

回答

1
class MyDb{ 
    public $pdo; 
    private static $instance; 

    public function __construct(PDO $pdo){ 
     $this->pdo = $pdo; 
    } 

    public static function getInstance() 
    { 
     if (!isset(self::$instance)) 
     { 
      $object = __CLASS__; 
      self::$instance = new $object; 
     } 
     return self::$instance; 
    } 

} 

$ query = MyDb :: getInstance() - > pdo-> query('SELECT * FROM ...');

+0

我已經知道了。但是需要按類傳遞參數。我想要定義全局pdo,以便在任何類中使用,只需編寫pdo變量。 –

+0

發佈更新;) –

相關問題