目前,我有这个代码,我写了:不过它似乎只是完全忽略这一点,即使用户名是相同的(资本和这样)检查,如果用户名已存在
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$usrip = $_SERVER['REMOTE_ADDR'];
$email = $_POST['email'];
$errors = array();
$checkUsername = $odb -> prepare("SELECT COUNT(*) FROM `users` WHERE `username` = :username");
$checkUsername -> execute(array(':username' => $username));
$countUsername = $checkUsername -> fetchColumn(0);
if ($checkUsername != 0)
{
$errors['Username is already taken'];
}
它仍将允许用户注册制作2个相同的用户。我的数据库看起来是这样的:
http://puu.sh/1mTcZ/9b2ff3b68f44b4cc486beacc2d2b88fd
我似乎无法得到这个工作的。数据库结构如下所示: 精确(dbname)>用户(表)>用户名(行)
任何帮助非常感谢。
编辑:
一些变化,这是我有后,但我仍然似乎有同样的问题。
$checkUsername = $odb->prepare("SELECT COUNT(*) FROM `users` WHERE LOWER(`username`) = :username");
$checkUsername -> execute(array(':username' => $username));
$countUsername = $checkUsername -> fetchColumn(0);
if ($checkUsername != 0)
{
$errors['Username is already taken'];
}
用户名行现在也utf8_general_ci
您的IF语句评估($ checkUsername!= 0)。不应该这样($ countUsername!= 0)? –