Проверьте, существует ли имя пользователя в базе данных MySQL PHP - PullRequest
1 голос
/ 23 декабря 2011

У меня есть страница registration.php, которую я создал, и мне нужно проверить, есть ли имя пользователя в моей базе данных, чтобы у меня не было 2 участников с одинаковым именем ...

Вот как я вставляю информацию о пользователе в базу данных (имя пользователя, пароль, дата регистрации и т. Д.):

mysql_query("INSERT INTO UserDb (ID, TimeStamp, UserName, Password) VALUES ('$ipaddress', NOW(), '$user_username', '$user_password')");

Как я могу проверить эту базу данных "UserDb" в поле "UserName", чтобы убедиться, что переменная пользователя "$ user_username" еще не существует?

Ответы [ 4 ]

2 голосов
/ 23 декабря 2011

Вы можете сделать UserName уникальным полем. MySQL затем откажется вставлять новую запись, если имя пользователя уже существует.

В качестве альтернативы вы можете запустить запрос в поисках имени пользователя. Если он не существует, вставьте его. Оберните это в транзакцию, чтобы быть уверенным, что после того, как вы искали пользователя, перед добавлением нового был добавлен дополнительный новый с тем же именем.

2 голосов
/ 23 декабря 2011

Вы можете сделать поле имени пользователя в базе данных первичным ключом или уникальным, что гарантирует уникальность имени пользователя в базе данных.

Затем, если вы попытаетесь вставить уже существующее имя пользователя , функция mysql_query () завершится ошибкой, вернув FALSE .

Кроме того, вы всегда должны запрашивать базу данных о существовании имени пользователя, используя простой оператор выбора:

SELECT username FROM table WHERE username='$php_username_var';

1 голос
/ 23 декабря 2011

Лучше сначала проверить имя пользователя, чем полагаться на ошибку базы данных в зависимости от базы данных - всегда лучше быть явным, чем подразумевать функциональность.

Также вам может понадобиться рассмотреть ситуацию, когда существует одна или несколько существующих записей с одинаковым именем пользователя.

Например, если пользователь подписывается на подписку, отменяется через несколько месяцев, а затем регистрируется снова позже.

Иногда лучше заново открыть учетную запись, а иногда просто создать новую ... В этом случае было бы хорошо иметь дублирующиеся строки с одним и тем же именем пользователя, если активна только текущая. , а остальное для исторической отчетности.

Фактически, вам могут НУЖНЫ дублирующиеся строки, если на ваши таблицы счетов, заметки и т. Д. Ссылаются старые экземпляры пользователя. Если вы удалите пользователя, это вызовет проблемы с вашими отчетами.

Также совет - подумайте об использовании адреса электронной почты пользователя в качестве имени пользователя - вы знаете, что это уникальная для них строка, которая дает вам способ связаться с ними по умолчанию и может быть проверена при регистрации.

1 голос
/ 23 декабря 2011

создайте уникальный ключ для UserName и, если произошла ошибка INSERT, проверьте номер ошибки.

...