$query = mysql_query("SELECT * FROM dbusers WHERE email ='$_POST[email]'") or die(mysql_error());
if(!$row = mysql_fetch_array($query) or die(mysql_error()))
{
NewUser();
}
else
{
echo "What's going on with this code?";
}
我试图弄清楚为什么这不起作用。用于检查尝试注册电子邮件的用户是否在数据库中。 Thanks1
答案 0 :(得分:2)
尝试这样的事情
$email = $_POST['email'];
$query = mysql_query("SELECT * FROM `dbusers` WHERE `email` ='$email'") or die(mysql_error());
免责声明:不推荐使用mysql_ *函数,因为它们已被弃用。改为使用MySQLi或PDO。
答案 1 :(得分:2)
使用mysql_num_rows
功能:
$query = mysql_query("SELECT * FROM dbusers WHERE email ='{$_POST['email']}'");
if(mysql_num_rows($query) >= 1) {
echo "What's going on with this code?";
}
else
{
NewUser();
}
注意:将mysql_ *函数切换为mysqli_ *函数或使用PDO库。不推荐使用。
答案 2 :(得分:0)
正如其他人所提到的,您应该使用某种方法来防止对您的数据库进行SQL注入。您可以将一堆逻辑串联起来为不推荐使用的MySQL驱动程序执行此操作,或者您可以使用MySQLI或PDO中的预准备语句。但是请注意,如果这些扩展未配置为使用“真正准备好的语句”,那么您可能仍需要对某些类型的值进行一些转义。
此外,如果您希望小型数据集在名义上更快,而对于大型数据集则要快得多,而不是在收到用户的电子邮件时存储,请先将其反转。例如,person @ world.com将成为moc.dlrow@nosrep。存储此类电子邮件还可以在查找使用特定域中的电子邮件注册的所有用户时构建更简单的查询。