我正在为我的电子邮件字段创建一些客户端验证。检查数据库中是否已存在该电子邮件。但是,结果始终表明电子邮件地址是否已存在可用。
这是我的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的一个问题。我也没有任何错误,所以我自然有点卡住了。
答案 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)