как Вы предотвращаете запись дублирующихся записей в php mysql? проверка входа перед вставкой к таблице.
я в настоящее время создаю раздел регистрации пользователя для своего веб-сайта, но хочу подарить им ошибку, если дублирующееся имя пользователя или адрес электронной почты найдены в базе данных.
Править
Это - то, что я имею далеко для вставки строк..., как был бы я реализовывать оба этих ответа здесь:
<?php
if (array_key_exists('confirm',$_POST)) {
$Cuser = $_POST['Cuser'];
$Cemail = $_POST['Cemail'];
$Cpassword = $_POST['Cpassword'];
$md5password = md5($_POST['Cpassword']);
mysql_query("INSERT INTO tbl_users (`username`,`email`,`password`)
VALUES ('$Cuser', '$Cemail', '$md5password')");
echo "Thank you. The user <b>".$Cuser." (".$Cemail.")</b> has been successfully added to the database.<p>
<a href='myaccount.php' class='form'>Return</a>";
exit;
}
?>
Я предполагаю, что еще мог реализовать все это в если... оператор?
я использовал оператор sql вместе с оператором if else.
mysql_select_db($database_speedycms, $speedycms);
$query_usercheck = "SELECT * FROM tbl_users WHERE username='$user' OR email='$email'";
$usercheck = mysql_query($query_usercheck, $speedycms) or die(mysql_error());
$row_usercheck = mysql_fetch_assoc($usercheck);
$totalRows_usercheck = mysql_num_rows($usercheck);
тогда
if ( $totalRows_usercheck > 0 )
выведите сообщение об ошибке, чтобы предотвратить добавление дубликатов
иначе разрешите вставку базы данных
Перед вставкой запустите оператор SQL, например
SELECT * FROM users WHERE users.name = :name OR users.email = :email
(используя параметризованный SQL ), и подсчитайте количество возвращенных строк.
Если их больше 0, есть дубликат.
OMG Ponies предложила ограничения для этих двух полей, что также является очень хорошей идеей для предотвращения ошибки в базе данных. Однако, если вы вставите дубликат, все, что вам даст это ограничение, - это сообщение об ошибке базы данных, которое вы можете или не захотите попытаться проанализировать.
Определите уникальные ограничения для столбцов username и email:
ALTER TABLE your_table ADD CONSTRAINT uk_username UNIQUE (username)
ALTER TABLE your_table ADD CONSTRAINT uk_email UNIQUE (email)
Если значение, которое пытаются вставить или обновить, уже существует в таблице, MySQL вернет ошибку о том, что запрос нарушает соответствующее уникальное ограничение (возможно, оба). Вы сами должны настроить PHP на изящную обработку этой ошибки.