2017-06-16 86 views
0

我的php代碼如下。調用成員函數bindParam()什麼?

class Login { 

    public function logar($login, $senha){ 
     $db = new Database(); 
     try{ 
      $conn = $db->connect(); 
      $prepare = $conn->prepare("SELECT * FROM account WHERE Login = :login AND Passwd = :senha"); 
      $prepare->bindParam(':login', $login, PDO::PARAM_STR); 
      $prepare->bindParam(':senha', $senha, PDO::PARAM_STR); 
      $prepare->execute(); 
      $ranking = $prepare->rowCount(); 
      if ($ranking >= 1){ 
       return "<div class='n_ok' style='margin:9px 15px;'><p>Successfully.</p></div>"; 
      }else{ 
       return "<div class='n_error' style='margin:9px 15px;'><p>Usuario ou senha incorreta.</p></div>"; 
      } 
     }catch(PDOException $e){ 
      echo "Erro: ".$e->getMessage(); 
     } 
    } 

} 

當我運行下面這樣的錯誤是發生

Fatal error: Call to a member function bindParam() on boolean in C:\AppServ\www\class\Login.class.php on line 9**

+0

'prepare'方法返回false,似乎有一些問題與數據庫的連接。 –

回答

0

「new Database()」是指什麼?我希望它應該返回PDO連接。

下面的代碼將正常工作肯定

時發生錯誤
class Login { 
    public function logar($login, $senha){ 
     $conn = new PDO('mysql:host=dbhostname;dbname=databasename', $user, $pass); 
     try{ 
      $prepare = $conn->prepare("SELECT * FROM account WHERE Login = :login AND Passwd = :senha"); 
      $prepare->bindParam(':login', $login, PDO::PARAM_STR); 
      $prepare->bindParam(':senha', $senha, PDO::PARAM_STR); 
      $prepare->execute(); 
      $ranking = $prepare->rowCount(); 
      if ($ranking >= 1){ 
       return "<div class='n_ok' style='margin:9px 15px;'><p>Successfully.</p></div>"; 
      }else{ 
       return "<div class='n_error' style='margin:9px 15px;'><p>Usuario ou senha incorreta.</p></div>"; 
      } 
     }catch(PDOException $e){ 
      echo "Erro: ".$e->getMessage(); 
     } 
    } 

} 
0

準備可能返回false, 始終以

$statement->close(); 

如果語法正確關閉以前的聲明,以下查詢也將運行良好。

+0

還要確保錯誤報告已啓用:error_reporting(E_ALL); ini_set('display_errors',1); – spiderweb

+0

仍存在相同的錯誤 – Guilherme

+0

嘗試添加此if(!$ prepare){ echo「false」; } else { \t \t $ prepare-> bindParam(':login',$ login,PDO :: PARAM_STR); $ prepare-> bindParam(':senha',$ senha,PDO :: PARAM_STR); $ prepare-> execute(); \t} – spiderweb

相關問題