嘗試使用PDO創建基本的用戶註冊腳本,當用戶和電子郵件存在時,我收到單個錯誤消息(用戶或電子郵件已存在),即時嘗試獲取單獨的輸出用戶和電子郵件錯誤。另外關於此腳本任何其他建議大加讚賞如何在單個查詢中獲得兩個單獨的錯誤結果
if(isset($_POST['Register'])){
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
//Validating ???
$statement = $conn->prepare("SELECT COUNT(*) AS count FROM users
WHERE username = :username AND email = :email");
$statement->bindParam(':username', $username);
$statement->bindParam(':email', $email);
$statement->execute(array(':username' => $username, ':email' => $email));
while ($row = $statement ->fetch(PDO::FETCH_ASSOC)) {
$result = $row["count"];
}
if ($result > 0) {
echo "That usernam or email is already taken";
}
else {
$sql = ("INSERT INTO users(username, email, password) VALUES(?, ?, ?)");
$statement = $conn->prepare($sql);
$statement->bindValue(":username", $username, PDO::PARAM_STR);
$statement->bindValue(":password", $password, PDO::PARAM_STR);
$statement->bindValue(":email", $email, PDO::PARAM_STR);
$statement->execute(array("$username", "$email", "$password"));
echo "New record created successfully";
}
}
'VALUES(?,?,?)'不能與指定的佔位符一起工作,你應該得到一個錯誤。 –
'SELECT username,email FROM users WHERE username =? OR email =?'如果找到兩行 - 兩個選項都被採用,如果有的話 - 檢查電子郵件,否則它的用戶名 – Peon
RTMs http://php.net/manual/en/pdostatement.bindvalue.php --- http:// php.net/manual/en/pdostatement.bindparam.php –