我想验证电子邮件地址以确保它是唯一的。
通过使用以下代码,它假设检查用户输入是否为空,是否是有效的电子邮件地址,并且它没有重复
但我的代码似乎不起作用,并给了我以下错误
我已经完成了其他人提出的问题,但我仍然没有解决问题
警告:mysqli_num_rows()期望参数1为mysqli_result,
中给出的布尔值
我想知道我的'if'语句序列是错的还是还有什么? 有什么帮助吗?
这是我的代码
if (empty($_POST["email"])) {
$emailErr = "Email is required";
$valid = false;
} else {
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
} if($email != "") {
$result = mysqli_query($conn,"SELECT * FROM email where email='".$email."'");
$num_rows = mysqli_num_rows($result);
}if($num_rows >= 1){
$emailErr = "Email already in use";
$valid =false;
}
}
答案 0 :(得分:0)
你应该在将mysqli_query传递给mysqli_num_rows之前检查结果(即$ result),参见documentation。
答案 1 :(得分:0)
使代码易于维护以备将来使用。我已更新您的代码,请检查此解决方案。
error_reporting(E_ERROR | E_PARSE);
$mysqli = new mysqli("localhost", "my_user", "my_password", "worldDB");
if (isset($_POST['submit']){
$email = $_POST['email'];
$emailErr = "Email is required";
if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false)
{
$sql = "SELECT count(*) FROM emails where email='".$email."'";
$result = $mysqli->query($sql);
if($result->num_rows >= 1){
echo "email already exist";
} else {
$sql = "INSERT INTO emails (email) VALUES ('$email')";
$result = $mysqli->query($sql);
echo "Thank you for Submitting.";
}
}
else
{
$emailErr = "Invalid email format";
}
}
希望这会有所帮助。