批判:
私は、値がデータベース行に存在する場合、挿入データベースの前にチェックしてみてください。
これは私のコードです。私は、データベース内に持っている場合は、配列の値をチェックしたいです。場合に存在「kullanici」とデータベースへの「totoid」いけないのインサート。
if($sonuc == 1) {
$arr[] = '(
"' . $mac->kullanici . '",
"5",
"' . $mac->totoid . '"
)';
}
if($sonuc == 2) {
$arr[] = '(
"' . $mac->kullanici . '",
"10",
"' . $mac->totoid . '"
)';
}
if($sonuc == 3) {
$arr[] = '(
"' . $mac->kullanici . '",
"15",
"' . $mac->totoid . '"
)';
}
if($sonuc == 4) {
$arr[] = '(
"' . $mac->kullanici . '",
"20",
"' . $mac->totoid . '"
)';
}
if($sonuc == 5) {
$arr[] = '(
"' . $mac->kullanici . '",
"25",
"' . $mac->totoid . '"
)';
}
}
$sql = $this->db->query("INSERT INTO kazananlar (kullanici, kazanci, totoid) VALUES " . implode(',', $arr));
GMB:
私が使用して示唆しているinsert... on duplicate key
構文を。この手法の利点は、あなたが可能な競合状態を心配する必要はありませんので、あなたは、単一のクエリを使用することができます。
最初の列に一意制約を作成することによって、この作品kullanici
とtotoid
:
create unique index idx_kazananlar on kazananlar(kullanici, totoid);
次に、あなたが行うことができます。
insert into kazananlar (kullanici, kazanci, totoid)
values (...)
on duplicate key update kullanici = values(kullanici)
行がすでに同じで存在する場合、データベースのチェックkullanici
とtotoid
、それがない場合は、on duplicate keys
句はノーオペレーションを実行しません。