0

mysqlデータベースにデータを入力するためのphpフォームがあります。たとえば、ID番号がすでに存在する場合、重複レコードを処理するにはどうすればよいですか。存在するかどうかを確認し、エラーメッセージがスローされる場合は、「 IDはすでにデータベースにあります」、これは挿入ステートメントの例ですが、入力する前にデータベースに重複レコードがないかチェックしたいと思います

$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

4 に答える 4

1

一意である必要があるフィールドに適切なUNIQUEKEYまたはPRIMARYKEYがある限り、重複レコードを挿入しようとするとエラーが発生します。次に、コードでこのエラーをテストできます。

$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());
    }
}
于 2012-04-15T14:31:13.433 に答える
0

次のような選択を行います:select count(loan_id)from load where load_id = $ values [loan_id] than result> 0は挿入せず、エラーメッセージ「IDはすでにデータベースにあります」をユーザーに表示します。それ以外の場合は挿入します。

于 2012-04-15T14:30:11.523 に答える
0

Loan_id列に一意のインデックス制約を追加します。アプリケーションが同じ値の別の行を挿入しようとすると、MySQLはエラーをスローします。

SQLは次のようになります。

CREATE UNIQUE INDEX loan_id_index ON table_name (loan_id);
于 2012-04-15T14:30:17.217 に答える
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)";
于 2012-04-15T14:33:34.453 に答える