2013-09-28 80 views
0

你好我工作的基本登錄腳本與PHP。對於不是我不擔心安全,我只是想讓它工作。但由於某種原因,當數據庫中的值存在時,它會一直返回false。PDO登錄一直顯示錯誤

編輯:connection.php包含登錄到數據庫的信息。 connection.php

if (isset($_POST['username']) && isset($_POST['password'])) 
{ 

    require_once 'Connection.php'; 
    $user = $_POST['username']; 
    $pass = $_POST['password']; 


     $sth = $db->prepare('SELECT `username` , `password` from `library` where `username` = ? And `password` = ? '); 

     $sth->bindParam(1, $user); 
     $sth->bindParam(2, $pass); 
     $sth->execute(); 

     if($sth->fetchColumn() > 0) { 
      echo $user; 
     } else { 
      echo 'false'; 
     } 
} 

我在做什麼錯

$config['db'] = array(
'host' => 'localhost', 
'username' => 'root', 
'password' => '', 
'dbname' => 'mywebsite' 
); 




$db = new PDO('mysql:host=' . $config['db']['host']. ';dbname=' . $config['db']['dbname'] , $config['db']['username'] , $config['db']['password']); 

結束了嗎?例如,虐待測試用戶和123密碼。它存在於我的庫中,它返回false。

+0

你確定你連接? – Mihai

+0

大多數def。我使用connection.php作爲註冊腳本。 – Dahnny012

回答

2

不要使用分隔符的列名:

SELECT username, password FROM `library` WHERE username = ? AND password = ? 

也是你if測試是錯誤的。 PDOStatement::fetchColumn從來沒有因此返回一個整數值,你需要改變:

if($sth->fetchColumn() > 0) { 

到:

if($sth->fetchColumn() != false) { 
+0

你是什麼意思,你解釋? – Dahnny012

+0

@ Dahnny012,請參閱編輯。 – Shoe

+0

謝謝,似乎在另一個問題的stackoverflow答案是錯誤的。你可以向我解釋分隔符嗎?當我查看一些人的sql語句時,有些人在所有行和列上使用分隔符。還有一些不要。 – Dahnny012