我正在设置一个函数,以检查我的数据库中的users
表中是否存在传递的用户名。为此,我使用以下代码:
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的新手,所以我可能错过了一些容易修复的东西。
谢谢。
答案 0 :(得分:11)
您不需要转义。
$stmt = $con->prepare("SELECT username FROM users WHERE username = :name");
在没有任何引号的情况下编写:name
应该可以解决问题。 PDO库已经为你逃脱了。
答案 1 :(得分: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
}