我正在建立一个登录/注册系统,我根本无法弄清楚为什么输入的用户名不会检查数据库中是否存在现有的用户名。
电子邮件代码检查是否存在现有电子邮件,但即使存在用户名,用户名也会完成!
以下是用户名代码:
$query = $db->prepare("SELECT * FROM `users` WHERE `username`=:username");
$query->bindParam(1, $username, PDO::PARAM_STR);
$count = $query->execute(array(":username" => strip_tags(addslashes($_POST['username']))));
if ($query->rowCount() == 1)
{
$errors[] = "Time to be original! That user already exists!";
}
以下是WORKING电子邮件代码:
$query = $db->prepare("SELECT * FROM `users` WHERE `email`=:email");
$count = $query->execute(array(":email" => strip_tags(addslashes($_POST['email']))));
if ($query->rowCount() == 1)
{
$errors[] = "Please pick a new email! That email is taken!";
}
答案 0 :(得分:0)
您正在使用位置索引(对于匿名占位符)调用bindParam()
,然后将参数数组传递给execute()
。选择一种方法或另一种方法(如果使用命名占位符,则不使用位置索引)。
答案 1 :(得分:0)
您根本不需要致电$query->bindParam
。
我认为,有必要致电strip_tags
和addslashes
。 PDO将引用所有必要的符号本身。
试试这个:
$query = $db->prepare("SELECT * FROM `users` WHERE `username`=:username");
$count = $query->execute(array(":username" => $_POST['username']));