Добрый вечер.Вставить то же самое время, это возможно?
У меня есть сомнения относительно включения в базу данных. Общим примером является учетная запись пользователя, в которой имена пользователей должны быть уникальными.
В следующей логике:
- Пользователь вводит данные в форму.
- Данные собираются с помощью $ _POST (или другим способом)
- Перед сохранением данных проверяется, если имя пользователя уже зарегистрировано
- Если нет, сохранить запись, если она есть, она информирует пользователя о том, что имя пользователя, которое уже существует.
Пример:
<?php
$username = $_POST['username'];
$query = "SELECT * FROM `user_tbl` WHERE `username` = '{$username}'";
$result = mysql_query($query);
if (mysql_num_rows ($result) > 1) {
/* Username already exists */
echo 'Username already exists';
} else {
/* Username doesn't exist */
/* a certain time is elapsed after checking */
/* .. insert query */
}
Мой вопрос, в системе с большим объемом запросов, вполне возможно, что между временем, чтобы проверить, существует ли уже имя пользователя и включения (если пользователь имя не существует), другой пользователь может сделать одно и то же действие за одно и то же время?
UPDATE
Я знаю о проблеме безопасности, используйте этот код (копию и прошлый), чтобы объяснить вопрос о возможности двух пользователей сделать то же самое в то же время. По вопросу об уникальном индексе я знаю, как это работает, может быть, я не был ясен в этом вопросе, это было только для того, чтобы увидеть, существует ли возможность «одновременных команд». Спасибо за ответы.
Ваш код не готов для системы с большим объемом запросов. Нет проверки, нет санитарии, и вы используете устаревшее расширение mysql. – user2182349
вы получили бы взломанные или потерянные данные, возможно, в течение 1 дня с таким кодом. Поставьте подтверждение и не используйте расширение, которое отклонено. –
Резервное копирование должно установить уникальное поле имени пользователя –