2012-10-08 191 views
1

我正在設置一個函數,以檢查數據庫中users表中是否存在傳遞的用戶名。爲了做到這一點,我用下面的代碼:PHP檢查用戶是否存在PDO

function usernameCheck($username) { 
    $con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
    $stmt = $con->prepare("SELECT username FROM users WHERE username = ':name'"); 
    $stmt->bindParam(':name', $username); 
    $stmt->execute(); 

    if($stmt->rowCount() > 0){ 
     echo "exists!"; 
    } else { 
     echo "non existant"; 
    } 
} 

但是,不管是什麼我嘗試設置爲$username,我不能讓任何exists!回來。我試圖改變它來檢查一個額外的列,如userID,但它仍然無法正常工作。我認爲我的語法是正確的,但我是PDO的新手,所以我可能錯過了一些易於修復的東西。

謝謝。

回答

11

您不需要轉義。

$stmt = $con->prepare("SELECT username FROM users WHERE username = :name"); 

寫入:name沒有任何引號應該做的伎倆。 PDO庫已經爲你逃脫了。

+0

哇哦,這是完美的!謝謝。這樣一個快速的答案。 :) – John

+0

謝謝!它拯救了我的一天! – xbadal

1

嘗試下面的SQL查詢

$query="SELECT username FROM users WHERE username = 'name'"; 
$query_res = $con->query($query); 
$count= count($query_res->fetchAll()); 
if($count > 0){ 
//user exists 
}