2017-03-20 4 views
0

データベーステーブルに一意のインデックスをsteamidに設定しました。私はどのように私はエラーを取得せずにこのキー(古いレコードを削除する)の重複値を持つレコードを挿入することができます私は不明です。誰かが私のコードを編集してそれを適切にすることができました、ありがとう。SQLでの重複値の削除または更新

$sql = "INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')"; 

エラーは次のとおりです。

Error: INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('March 20, 07:09pm', '2017', 'Aweosmedude', '76561113498123831721') Duplicate entry '76561113498123831721' for key 'steamid'

答えて

0

それはあなたがすでにstreamid=76561113498123831721であなたのsteam_dataテーブルのレコードを持っていることを意味し; 1つ以上のstreamidが存在しないようにスキーマに制約があります。したがって、INSERT IGNORE INTO stream_data...かdo

などのいずれかを行うことができます。

INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid') ON DUPLICATE KEY UPDATE steamname=VALUES(steamname);

(@ReneSの答えはINSERT IGNORE INTO...の例があります)

+0

ありがとう、これは私が探しているものですが、データがsteamidのために存在する場合は、steamname値を更新してください。そのために素早くコードを作成できますか?ありがとう! – CodeLight

+1

'重複キー更新でsteamname = VALUES(スチームネーム)' –

+0

私は答えを編集しました。それを承認済みとしてマークすることができます –

0
$sql = "INSERT IGNORE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')"; 
0

もう一つの選択肢はREPLACE statementです:

REPLACE works exactly like INSERT , except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.

REPLACE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid') 

(私はあなたが実際にデータを挿入していない願っていますそのようなクエリを使用してデータベースに追加します。準備された文を使用してください)

関連する問題