0

所以我试图做看起来应该做的事情,而且可能是一个非常简单的平凡任务。我正在尝试检查我的数据库中的电子邮件地址。我不知道我是否走在正确的轨道上,有人能把我逼出来吗?

$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' ) ;
}
4

4 回答 4

2

此查询将失败,因为您需要在 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{
 // ....
}
于 2013-01-03T15:37:19.183 回答
1

你需要quotes围绕变量$email

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

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

于 2013-01-03T15:33:53.477 回答
1

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

$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
}
于 2013-01-03T15:34:06.873 回答
0
$query = "SELECT * FROM 68_users WHERE email= '$email'";

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

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

于 2013-01-03T15:36:37.910 回答