【问题标题】:Email availability check returning available for every email电子邮件可用性检查返回可用于每封电子邮件
【发布时间】:2013-01-22 13:05:24
【问题描述】:

表单提交的HTML代码:

<div class="control-group">
    <label class="control-label" for="input01">Email</label>
    <div class="controls">
         <input type="text" class="input-xlarge" id="email" name="email" 
         rel="popover" data-content="What’s your email address?" 
         data-original-title="Email">
        <span class="check" style="color:red;" ></span>
    </div>
</div>

将电子邮件发布到 PHP 脚本中的 jQuery 代码:

 $(function () {
     $('#email').keyup(function () {
         var email = $(this).val();
         if (email != '') {
             //$('.check').show();
             $('error').fadeIn(400).html('<img src="/img/ajax-loading.gif" />');
             var dataString = 'email=' + email;
             $.ajax({
                 type: "POST",
                 url: "pages/check_email.php",
                 data: dataString,
                 cache: false,
                 success: function (result) {
                     if (result == '') {
                         $('.check').html(email + ' Avaliable');
                         $('#create').attr('disabled', '');
                         $('#create').attr('value', 'Active');
                         $("#email").removeClass("red");
                         $("#email").addClass("white");
                     } else {
                         $('.check').html(email + ' ' + result);
                         $('#create').attr('disabled', 'disabled');
                         $('#create').attr('value', 'Deactive');
                         $("#email").removeClass("white");
                         $("#email").addClass("red");
                     }
                 }
             });
         } else {
             $('.check').html('');
             $('#submit').attr('disabled', 'disabled');
             $('#submit').attr('value', 'Deactive');
         }
     });
 });

检查电子邮件可用性并在找到/未找到值时返回 1 或 0 的 PHP 代码:

include_once "../base.php";

$stmt = $db->prepare("SELECT * FROM `Consultants` WHERE email =':email'");
$stmt->bindParam(":email", $_POST['email']);
$stmt->execute();

$num_rows = $stmt->fetchColumn();
$HTML='';
if($num_rows > 0){
    $HTML='is already used';
}else{
    $HTML='';
}
echo $HTML;

$stmt = null;

对于输入的每封电子邮件,它都会返回“可用”。我的数据库中有几封正在使用的电子邮件。我在控制台中也没有收到任何错误。

【问题讨论】:

    标签: php html jquery pdo


    【解决方案1】:

    您从 Consultants 表中选择所有字段,因此第一列的计算结果可能大于 0。

    此外,您准备好的语句不应在绑定参数:email 周围使用引号。

    修复:

    $stmt = $db->prepare("SELECT COUNT(*) FROM `Consultants` WHERE email =:email");
    

    【讨论】:

    • 它仍然返回“可用”的电子邮件地址,但不幸的是。
    • if($num_rows > 0){ $HTML='不可用'; }else{ $HTML='可用'; } 然后编辑 jQuery - if(result=='Available'){ ... 不幸的是,仍然在不可用的电子邮件上返回可用!
    • @BenLittle 更新了答案,你准备好的陈述有另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多