【发布时间】:2012-09-15 00:15:16
【问题描述】:
我一直想知道如果在注册期间用户名和/或电子邮件重复,如何签入 MySQL 表。以下是我迄今为止尝试过但无济于事的方法:
$username = $_POST['username'];
$sq = $db->exec("SELECT * FROM `users` WHERE `username` = '$username'");
if ($sq->rowCount() > 0)
{
$msg = "That username is already taken.";
$error = true;
}
$email = $_POST['email'];
$sq = $db->exec("SELECT * FROM `users` WHERE `email` = '$email'");
if ($sq->rowCount > 0)
{
$msg = "That email is already taken.";
$error = true;
}
if (!error)
{
//add to db
}
这给出的错误是Call to a member function rowCount() on a non-object
你能帮忙吗?
【问题讨论】:
-
有什么问题?它根本不起作用吗?做一些意想不到的事情?不拿起现有的用户名和电子邮件?
-
哦,我知道我忘记了什么。已编辑。
-
您的代码容易受到 SQL 注入的攻击。您真的应该使用prepared statements,将变量作为不获得 SQL 评估。如果你不知道我在说什么,或者如何解决它,请阅读Bobby Tables 的故事。
-
我对 PHP 了解不多,但第一个如果你在 $sq->rowCount() 中有括号,第二个如果你只有 $sq->rowCount。这可能是个问题吗?