2012-12-04 15 views
0

我有以下配置。爲什麼新的PDO在下面引發錯誤?

private $host = '127.0.0.1'; 
    private $db = 'loginexample'; 
    private $dbusername = 'root'; 
    private $dbpass = 'root'; 

$this->conn = new PDO("mysql:host={$host};dbname={$db};charset=utf8", $dbusername, $dbpass); 

但如果我這樣做

$this->conn = new PDO("mysql:host={$host};dbname=loginexample;charset=utf8", root, root); 

回答

2

你的變量是私有的類屬性,所以你需要對所有的人都可以使用$this

private $host = '127.0.0.1'; 
private $db = 'loginexample'; 
private $dbusername = 'root'; 
private $dbpass = 'root'; 

$this->conn = new PDO("mysql:host={$this->host};dbname={$this->db};charset=utf8", $this->dbusername, $this->dbpass); 

當你插入字面值,它連接(希望你的密碼不是root)。而且,由於$host沒有定義(因此NULL,則默認爲驅動程序的默認值,這是localhost(或127.0.0.1)。

好像你可能沒有使用error_reporting啓用,因爲你會看到對未定義的變量聲明。

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
+0

這將是一個運行時錯誤,而不是一個PDO錯誤 –

+0

@ColeJohnson爲什麼呢?這是一個雙引號的字符串。(另外,OP並沒有真正說的是什麼錯誤) –

+0

@MichaelBerkowski謝謝你是對的我沒有用戶$ this-> db等等。我的不好。|仍然使用OOP。 –

相關問題