предотвращение повторной вставки строк в php / mysql

как вы предотвращаете запись дубликатов записей в 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."&nbsp;(".$Cemail.")</b> has been successfully added to the database.<p> <a href='myaccount.php' class='form'>Return</a>"; exit; } ?> 

Я предполагаю, что я мог бы реализовать все это в инструкции if … else?

Related of "предотвращение повторной вставки строк в php / mysql"

Определите уникальные ограничения для столбцов имени пользователя и электронной почты:

 ALTER TABLE your_table ADD CONSTRAINT uk_username UNIQUE (username) ALTER TABLE your_table ADD CONSTRAINT uk_email UNIQUE (email) 

Если значение, пытающееся быть ввезенным или обновленным, уже существует в таблице, MySQL вернет ошибку, заявив, что запрос нарушает соответствующее уникальное ограничение (возможно, и то, и другое). Это зависит от вас, чтобы настроить PHP, чтобы справиться с этим изящно.

Прежде чем вставлять, запустите инструкцию SQL что-то вроде

 SELECT * FROM users WHERE users.name = :name OR users.email = :email 

(с использованием параметризованного SQL ) и подсчет количества возвращаемых строк.

Если их больше 0, есть дубликат.

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

Я использовал оператор 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 ) 

отобразить сообщение об ошибке, чтобы предотвратить добавление дубликатов

в противном случае разрешить ввод базы данных