2013-12-08 56 views
0

我正在做一個登錄/註冊系統,我根本找不到爲什麼輸入的用戶名不會檢查數據庫中是否存在用戶名。檢查用戶是否存在:插入數據庫而不檢查?

電子郵件代碼完美地檢查是否存在現有電子郵件,但即使存在現有電子郵件,用戶名也會通過!

這裏是用戶名密碼:

$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!"; 
} 

這裏是工作郵件代碼:

$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!"; 
} 
+1

爲什麼地球上你應聘'用strip_tags(和addslashes())'? – eggyal

回答

0
  1. 根本不需要撥打$query->bindParam。我不認爲,有必要致電strip_tagsaddslashes。 PDO將自己引用所有必要的符號。

試試這個:

$query = $db->prepare("SELECT * FROM `users` WHERE `username`=:username"); 
$count = $query->execute(array(":username" => $_POST['username'])); 
+0

這並不能解決問題,請您向我解釋這些問題?我不確定我得到了他們。我得到你的修復,但你能解釋什麼是從哪裏:用戶名和陣列(「:用戶名」=> $ POST ['用戶名']) – Nikush

+0

@ user3078911這意味着:從$ _POST數組,取而代之的價值:用戶名參數。 – user4035

0

您正在與位置編號調用bindParam()(對於匿名佔位符),然後傳遞參數數組到​​。選擇一種方法或其他(如果使用指定的佔位符,則不使用位置索引)。

相關問題