尝试使用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 –