处理mysql插入语句中的重复记录

时间:2012-04-15 14:26:19

标签: php mysql

我有一个PHP表单将数据输入到mysql数据库中,我的问题是如何处理重复记录,例如,如果ID号已经存在,我如何检查是否存在然后是否确实会抛出错误消息, expale说“ID已经在数据库中”,这里是一个insert语句的例子,但是我想在进入之前检查数据库是否有重复记录

$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());
}

4 个答案:

答案 0 :(得分:1)

只要字段上有合适的UNIQUE KEY或PRIMARY KEY需要唯一,当您尝试插入重复记录时,您将收到错误。然后,您可以在代码中测试此错误。

$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());
    }
}

答案 1 :(得分:0)

做一个选择:从load中选择count(loan_id),其中load_id = $ values [loan_id] 如果结果> 0,请不要插入并提供错误消息" ID已存在于数据库中"用户,否则插入。

答案 2 :(得分:0)

在loan_id列上添加unique index constraint。当您的应用程序尝试插入具有相同值的另一行时,MySQL将抛出错误。

SQL看起来类似于:

CREATE UNIQUE INDEX loan_id_index ON table_name (loan_id);

答案 3 :(得分:0)

在插入或进行更新之前进行检查。

检查

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

<强>更新

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