2013-01-03 44 views
0

所以即时尝试做什么应该看起来可能是一个非常简单的平凡任务。我试图检查我的数据库中的电子邮件地址。我不知道我是否在正确的轨道上,有人能把我掐死吗?检查在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') ; 
} 
+3

如果您运行它,会发生什么情况? –

+2

'WHERE email = $ email'至少需要'WHERE email ='$ email'',你不应该使用'AES_ENCRYPT'作为密码,因为它是可逆的,我猜你很容易被SQL注入。 – ceejayoz

+0

在这里使用准备好的语句 - 会让你的生活更轻松 – ethrbunny

回答

2

此查询将失败,因为您需要围绕电子邮件变量的撇号。您也可以简单地运行查询并查看返回的行数:

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

您需要的变量$email周围quotes

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

您将需要看到其余代码的结果,知道其他一切正常工作。

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 
} 
0
$query = "SELECT * FROM 68_users WHERE email= '$email'"; 

也将返回值的数组,你的“如果($结果... == $电子邮件)“将失败。

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

相关问题