2013-02-03 27 views
0

我只是將我的網站的MySQL更改爲PDO,當我嘗試在其他課程中使用PDO時遇到了一個奇怪的問題。其他課程中的PDO有什麼問題?

class Database { 
private $pdo; 

public function __construct() { 
    $this->pdo = new PDO('mysql:host=localhost;dbname=appdora;charset=utf8', 'root', 'root'); 
} 
} 

class doClass { 

//Variables 
private $db; 

//PDO 
public function __construct(Database $db) { 
    $this->db = $db; 
} 

和代碼與回報:出現以下錯誤:

Catchable fatal error: Argument 1 passed to doClass::__construct() must be an instance of Database, none given, called in .../index.php on line xx and defined in ../classes.php on line xx

代碼:

$do = new doClass(); 
if ($do->loginCheck()) { echo 'loginOk'; } else { 'loginError'; } 

loginCheck()是笑着的功能,沒有類的作品!

你能幫我嗎,這是什麼問題? 在此先感謝!

+0

你在哪裏inititing你'doClass'?顯示該代碼。 – Oldskool

+0

顯示錯誤實際指向的代碼... – poke

+0

已添加!謝謝你的幫助! – Skylineman

回答

4
$do = new doClass(); 

您已定義doClass類期望在構造函數的參數:

public function __construct(Database $db) 

所以,你需要提供Database類型的該參數,成功構造對象。

例如,如果你在什麼地方變$database內部存儲在數據庫中的對象,你可以簡單地把它傳遞給doClass這樣的構造:

$do = new doClass($database); 
+0

你能讓我知道如何做到這一點? – Skylineman

+0

非常感謝您的幫助! – Skylineman

+0

你還能幫忙嗎?如果我試圖做一個PDO->查詢,它會告訴我這個問題:'致命錯誤:調用未定義的方法Database :: query()'。我試圖訪問:'$ stmt = $ this-> db-> query(...);' – Skylineman

相關問題