私は現在、私が書いたこのコードを持っています:
$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 になりました