2015-08-15 56 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

发布更新;) –

相关问题