正在数据库中验证电子邮件地址


Validating email address in database

我正在为我的电子邮件字段创建一些客户端验证。检查电子邮件是否已经存在于数据库中。然而,结果总是显示该电子邮件地址是可用的,无论它是否已经存在。

这是我的JS

$(document).ready(function() {
    $("#email_address").blur(function() {
        var email = $("#email_address").val();
        $("#emailError").html('<img alt="" src="img/loading.gif"/>');
            $.post("check_username_new.php", {email:email},
            function(result) {
                if (result > 0) {
                    $("#emailError").html("Not Available");
                    console.log(result);
                }
                else {
                    $("#emailError").html("Available");
                    console.log(result);
                    }
                });
    });
});
PHP

<?php
  require('includes/application_top.php');
$email = mysql_real_escape_string(strtolower($_POST["email_address"]));
$sql = "SELECT count(*) FROM customers WHERE customers_email_address = '" . $email . "'";
$result = mysql_query($sql) or die("Error: " . mysql_error());
if(mysql_num_rows($result) > 0) {
    echo 1;
}
else {
    echo 0;
}
?>

据我所知,我的jQuery正在工作,似乎是一个问题与php。我没有得到任何错误的工作,所以自然我有点卡住了。

您正在使用COUNT,如果没有找到数据和找到的记录数量,它将返回0。在这两种情况下,资源中都会有一个row。因此,mysql_num_rows将始终是1

你应该这样做-

$result = mysql_query($sql) or die("Error: " . mysql_error());
$data = mysql_fetch_assoc($result); // You can use any fetch method
if($data['count(*)'] > 0) {
    echo 1;
}
else {
    echo 0;
}

mysql已废弃。喜欢使用 PDO mysqli

我想你应该这样做

count(*)

mysql_num_rows()

不是。

count可能更好,参见SELECT count () vs mysql_num_rows();