mySQL データベースに 1 対多の関係を保存しようとしていますが、可能な限りエントリの重複を避けたいと考えています。
インターネットで読んだところ、「ON DUPLICATE KEY UPDATE」がオプションであることがわかりました。これは私の状況でうまくいきますか?
コード:
function insert_options($uid, $array) {
if(!is_array($array)) {
return false;
}
$db = db_connect();
foreach($array as $a) {
$sql = 'INSERT INTO newsletter_coupon_codes_options (uid, option_name, value) VALUES (?, ?, ?)';
$stmt = $db->prepare($sql);
if($stmt === false) {
echo "Prepare failed: (" . $db->errno . ") " . $db->error;
}
$stmt->bind_param('iss', $uid, $a, $value);
$value = '1';
$stmt->execute();
}
}
テーブル
UID(INT11), OPTION_NAME(varchar(255)), VALUE(INT(11))
ステートメントに追加しようとしましON DUPLICATE KEY UPDATE value = 1
た$sql
が、何もしないようでした。uid
基本的に、とoption_name
が存在する場合にデータを挿入するときに、 を設定するだけでvalue
新しい1
エントリを作成しないことを確認したいと思います。
一意のキーは設定されておらず、主キーのみが設定されていuid
ます。何をユニークにすればいいのかわかりませんでした。uid
ごとに複数のエントリがあるため、一意にすることはできませんuid
。複数のoption_name
に対して同じ option_name があるため、一意にすることもできませんuid
これを達成するための最良の方法は何ですか?