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

时间:2015-07-17 08:37:25

标签: javascript php jquery

我正在为我的电子邮件字段创建一些客户端验证。检查数据库中是否已存在该电子邮件。但是,结果始终表明电子邮件地址是否已存在可用。

这是我的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的一个问题。我也没有任何错误,所以我自然有点卡住了。

2 个答案:

答案 0 :(得分:2)

您正在使用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

答案 1 :(得分:0)

我怀疑你应该做

count(*)

mysql_num_rows()

不是两者。

可能更好,请参阅SELECT COUNT() vs mysql_num_rows();