Краткий ответ:
Если вы хотите, чтобы имена пользователей не учитывали регистр, вам нужно хранить их в базе данных без учета регистра. Сначала преобразуйте данное имя пользователя во все строчные (или все прописные).
$lcusername = strtolower($username);
Затем используйте $ lcusername везде, где вы используете $ username в коде, который вы указали.
Длинный ответ:
Вам не нужно проверять наличие ключа в таблице. Предполагая, что у вас есть атрибут PRIMARY KEY в поле имени пользователя, просто попробуйте внести ваши данные в таблицу (после преобразования их в нижний регистр). Если база данных возвращает ошибку «дубликат ключа», вы знаете, что имя пользователя уже существует, и можете отобразить сообщение об ошибке. Если база данных возвращает, что она успешно вставила строку (возможно, с помощью функции mysql_affered_rows). Это избавляет вас от необходимости делать SELECT перед выполнением INSERT, значительно упрощая ваш код.
Вам также следует избегать всех строк, которые вы будете вставлять в таблицу, чтобы предотвратить потенциальные дыры в безопасности.
$lcusername = strtolower($username);
// Escape strings
$esclcusername = mysql_real_escape_string($lcusername);
$escpassword = mysql_real_escape_string($password);
mysql_query("INSERT INTO userdb (username, password) VALUES('$esclcusername', '$escpassword') ");
if (mysql_affected_rows() == -1) {
// Display error message
} elseif (mysql_affected_rows() == 1) {
// Yay! Insert successful
} else {
// Affected rows is 0. Something went wrong
}