how do you prevent the entry of duplicate records in php mysql? validating input before insertion to the table.
i am currently building a user registration section f
Define unique constraints for the username and email columns:
ALTER TABLE your_table ADD CONSTRAINT uk_username UNIQUE (username)
ALTER TABLE your_table ADD CONSTRAINT uk_email UNIQUE (email)
If the value attempting to be insertered or updated already exists in the table, MySQL will return an error stating the query violates the appropriate unique constraint (possibly both). It's up to you to setup PHP to handle this gracefully.
i used the sql statement along with an if else statement.
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);
then
if ( $totalRows_usercheck > 0 )
display an error message to prevent any duplicates from being added
otherwise allow database insert
Before inserting, run a SQL statement something like
SELECT * FROM users WHERE users.name = :name OR users.email = :email
(using parametrized SQL) and count the number of rows returned.
If there's more than 0, there's a duplicate.
OMG Ponies suggested constraints on those two fields, which is also a very good idea for preventing you from making a mistake with the database. However, if you insert a duplicated, all that constraint will get you is a database error message that you may or may not want to try to parse.