2012-10-08 151 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 
}