2013-03-26 40 views
0

好吧我從我的用戶名存在函數中收到錯誤。 這是註冊功能。致命錯誤:調用一個非對象的成員函數prepare()

public function register($username, $upassword){ 
    if(!$this -> exists($username)) { 
     $salt = $this->salt(); 
     $date = date('Y-m-d'); 
     $password = $this->md5($upassword, $salt); 

     $SQL = $this -> db -> prepare("INSERT INTO `user` (username, password, salt, created_at) VALUES(:username, :password, :salt, :date)"); 
     $SQL -> execute(array(':username' => $username, ':password' => $password, ':salt' => $salt,':date' => $date)); 
    return TRUE; 
    } else { 
     return FALSE; 
    } 
} 

該錯誤似乎來自此行中的準備聲明。

public function exists($username){ 
     $SQL = $this -> db -> prepare("SELECT COUNT(*) FROM `user` WHERE `username` = :username"); 
     $SQL -> execute(array(':username' => $username)); 
     $count = $SQL -> fetchcolumn(0); 
     if($count > 0) { 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
    } 

獲取錯誤: 致命錯誤:調用一個成員函數準備()的非物體上的functions.php上線41

哪一個是存在的函數內的第一行?

任何人都可以幫助我嗎?

+0

'$ this - > db'是什麼? – 2013-03-26 07:48:54

+0

var $ db; function _construct($ db){this - > db = $ db; } – 2013-03-26 07:49:51

+0

你的數據庫連接在哪裏? – egig 2013-03-26 07:50:03

回答

0

存在()類不「看」你這 - $>分貝,嘗試調試它,如果它真的被引用或可存在()類使用

+0

var $ db;公共職能_construct($ db){ $ this - > db = $ db; } define('DB_USER','root'); define('DB_PASS',''); define('DB_NAME','name'); define('DB_HOST','localhost'); $ db = new PDO('mysql:host ='。DB_HOST。'; dbname ='。DB_NAME,DB_USER,DB_PASS); – 2013-03-26 18:46:40

+0

存在($ username)是我的用戶類中的一個函數。 'var $ db;公共函數_construct($ db){$ this - > db = $ db; }' – 2013-03-27 01:54:15

0

如果你想像這樣實例化你的類:new ClassName($db)然後$this->db最有可能沒有定義,因爲你還沒有爲你的類定義一個與$this->db做任何事情的構造函數。

_construct($db)應該__construct($db)

假設你想要的構造魔術方法。所有魔法方法都以兩個下劃線開頭。

相關問題