dames
dames

Reputation: 1481

handling duplicate records in mysql Insert statement

Im i have a php form to enter data into a mysql database, my question is how do i handle duplicate records for example if an ID number already exsists how do i check if exsists then if it does throw an error message, for expale saying "ID is already in the database",here is an example of an insert statement, however i would like it to check the database for duplicate records before entering

$values = $_POST;
foreach ($values as &$value) {
    $value = mysql_real_escape_string($value);
}

$sql1="INSERT INTO loan (loan_id)
VALUES ('$values[loan_id]')";

$result = mysql_query($sql1);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

Upvotes: 0

Views: 2596

Answers (4)

garnertb
garnertb

Reputation: 9594

Add a unique index constraint on the loan_id column. MySQL will throw an error when your application attempts to insert another row with the same value.

SQL will look similar to:

CREATE UNIQUE INDEX loan_id_index ON table_name (loan_id);

Upvotes: 0

Andreas Linden
Andreas Linden

Reputation: 12721

eigther check before inserting or do and update.

check

"SELECT COUNT(*) FROM loan WHERE loan_id = '" . $values['load_id'] . "'"

update

"INSERT INTO loan (loan_id, some_field) VALUES ('". $values['loan_id'] ."', '". $values['some_field'] ."') ON DUPLICATE KEY UPDATE some_field = VALUES(some_field)";

Upvotes: 0

user1191247
user1191247

Reputation: 12973

As long as there is a suitable UNIQUE KEY or PRIMARY KEY on the field that needs to be unique you will receive an error when you try to insert the duplicate record. You can then test for this error in your code.

$values = $_POST;
foreach ($values as &$value) {
    $value = mysql_real_escape_string($value);
}

$sql1="INSERT INTO loan (loan_id) VALUES ('$values[loan_id]')";

$result = mysql_query($sql1);
if (!$result) {
    if (mysql_errno() == 1586) {
        echo "ID is already in the database";
    } else {
        die('Invalid query: ' . mysql_error());
    }
}

Upvotes: 1

Nesim Razon
Nesim Razon

Reputation: 9794

do a select like : select count(loan_id) from load where load_id=$values[loan_id] than if result>0 don't insert and give error message "ID is already in the database" to user, otherwise insert it.

Upvotes: 0

Related Questions