2015-04-03 261 views
0

這是當我不打算把它放在一個函數內部它的工作原理類中,但如果它的內部功能,它沒有任何想法,我的數據庫連接的代碼?PDO連接失敗

class DBConnection { 

private $connection; 

function __construct(){ 
    $this->open_connection(); 
} 

public static function open_connection(){ 

    try { 
     $connection = new PDO('mysql:host=localhost;dbname=practice','root',''); 
     $connection->exec("SET NAMES 'utf8'"); 
     $connection->exec("SET CHARACTER SET utf8"); 
     $connection->exec("SET character_set_server=utf8"); 
     $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     return $connection; 

    } catch (Exception $e) { 
    die($e->getMesage()); 

    } 

} 

}// class ends 

回答

0

我想在你的代碼的問題是你使用一個靜態函數返回的連接和構造函數沒有分配給你的私有變量

與私人$連接第一個解決方案:

​​

二連接帶靜態連接

class DBConnection { 

private static $connection = null; 

function __construct(){ 
    if (self::$connection == null) 
     $this->open_connection(); 
} 

public static function open_connection(){ 

    try { 
     self::$connection = new PDO('mysql:host=localhost;dbname=practice','root',''); 
     self::$connection->exec("SET NAMES 'utf8'"); 
     self::$connection->exec("SET CHARACTER SET utf8"); 
     self::$connection->exec("SET character_set_server=utf8"); 
     self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    } catch (Exception $e) { 
    die($e->getMesage()); 

    } 

} 

我希望能幫到你。

+0

我想你的代碼先生,但仍然不work..does PDO有兼容性問題與XAMPP?我原來的代碼時,我在我的舊的數據庫連接文件在不同的項目中粘貼它,它works..but當我做我使用該代碼的新一個它doesn't..i試過你仍然不會在Windows 8中,有時它的工作(一次)DN fails..im工作現在贏得7仍然失敗.. – 2015-04-03 08:28:19

+0

你必須取消註釋'延長= pdo.so'和你的''php.ini'延長= pdo_mysql.so'?或者用xamp激活pdo擴展? 使用''來驗證是否PDO啓用 – Dralagen 2015-04-03 08:33:54

+0

它是MySQL啓用,mysqli的.. – 2015-04-03 08:47:59