2012-04-15 15 views
0

私はmysqlデータベースにデータを入力するPHPフォームを持っています。私の質問は、例えばID番号が既に存在する場合はどうすれば重複レコードを処理するのですか? 、ここでのINSERT文の一例である「IDがデータベースに既に存在する」と言ってexpaleため、エラーメッセージを投げるん、しかし、私はmysqlの重複レコードを処理する挿入文

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

答えて

1

。コード内でこのエラーをテストできます。

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

が行う入る前に、重複したレコードのデータベースを確認することを希望しますload_id = $ values [loan_id] よりresult> 0よりもselect count(loan_id)を選択すると、「IDはすでにデータベースにあります」というエラーメッセージが挿入され、それ以外の場合は挿入されません。

0

loan_id列にunique index constraintを追加します。アプリケーションが同じ値を持つ別の行を挿入しようとすると、MySQLはエラーをスローします。

SQLは、のようになります。あなたが重複したレコードを挿入しようとする限り、ユニークである必要があり、フィールド上の適切なUNIQUE KEYまたはPRIMARY KEYがあるとエラーが表示されます

CREATE UNIQUE INDEX loan_id_index ON table_name (loan_id); 
0

eigtherチェック前に挿入するか更新してください。

チェック

"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)"; 
関連する問題