繁体   English   中英

检查mysql数据库中的电子邮件地址

[英]checking for email address in mysql db

因此,即时通讯试图做应该看起来似乎很简单的平凡任务。 我正在尝试检查数据库中的电子邮件地址。 我不知道即时消息是否走上正轨,能请一个使我摆脱困境的人吗?

$query = "SELECT * FROM 68_users WHERE email= $email";
if($result = mysqli_query($link, $query) == $email) {
     echo 'Email has been registered';
}else{
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail) 
             VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')" 
             or die(mysqli_error());
    if ( !mysqli_query($link, $query) ) {
        echo 'error: '.mysqli_error($link);
        exit();
    }
}
mysqli_close($link);
}

谢谢大家的帮助。 我需要弄清楚php的调试情况。 现在我在我的站点上用eclipse编写和调试,这非常令人讨厌。

$query = "SELECT * FROM 68_users WHERE email= '$email'";
$result = mysqli_query($link, $query);
if($result->num_rows > 0) {
    echo 'This email has previously been registered';
}else{
    $query = "INSERT INTO 68_users (email,pass,old_pass,first_name,last_name,dob,gender,phone,fanmail)
    VALUES ('$email',AES_ENCRYPT('$pass', 'something'),AES_ENCRYPT('$pass', 'something'),'$first_name','$last_name','$dob','$gender','$phone','$fanmail')"
    or die(mysqli_error());
    if ( !mysqli_query($link, $query) ) {
        echo 'error: '.mysqli_error($link);
        exit();
    }
    header( 'Location: http://www.example.com/html/thankyou.html' ) ;
}

此查询将失败,因为您需要在email变量周围加撇号。 您也可以简单地运行查询并查看返回多少行:

$query = "SELECT * FROM 68_users WHERE email= '$email'";
$result = mysqli_query($link, $query);
if($result->num_rows > 0) {
    echo 'Email has been registered';
}else{
 // ....
}

您需要在变量$email周围加quotes

$query = "SELECT * FROM 68_users WHERE email= '$email'";

您将需要查看其余代码的结果,以了解其他一切是否正常。

在不知道当前代码结果的情况下,我能发现的一个问题是您要确保将电子邮件值用单引号括起来作为查询语句,以确保对其进行正确评估:

$query = "SELECT * FROM 68_users WHERE email='$email'";

执行查询时,省略引号将导致错误,具体取决于您的详细处理方式,可能会或可能不会明显。 更进一步,这将是基本调试起作用的地方,这是所有程序员的基础。

删除电子邮件的相等性检查,因为您的查询语句已经为您完成了该检查。 如果没有返回任何行,则它将返回false并触发else语句:

$query = "SELECT * FROM 68_users WHERE email='$email'";
if($result = mysqli_query($link, $query)) {
    // Registered
}else{
    // Not Registered
}
$query = "SELECT * FROM 68_users WHERE email= '$email'";

还将返回一个值数组,您的“ if($ result ... == $ email)”将失败。

* var_dump($ result)*以查看查询返回的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM