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