我只是在两列(a和b)的组合不存在的情况下才尝试INSERT。否则,我想做一个更新。以下代码的问题是它始终插入新行而不是在我想要时更新。我认为,原因是因为我没有管理,在我的表格设置中确实有一种两个唯一的列。 有没有人有办法解决吗?谷歌今天似乎不是我的朋友..
表格:
id : int, primary, AI a b c and d : int
代码:
$req = $connexion -> prepare("
INSERT INTO position (a,b,c,d)
VALUES (:a,:b,:c,:d)
ON DUPLICATE KEY UPDATE
c=:c;");
$position->bindParam(':a', $a);
$position->bindParam(':b', $b);
$position->bindParam(':c', $c);
$position->bindParam(':d', $d);
$a = $val_a;
$b = $val_b;
$c = $val_c;
$d = $val_d;
$req -> execute();
答案 0 :(得分:1)
您是否已尝试更改表格以反映您的需求?在执行代码之前尝试这个。
ALTER TABLE `position` ADD UNIQUE `unique_index`(`a`, `b`);
答案 1 :(得分:1)
ON DUPLICATE KEY
不匹配,则 UNIQUE KEY
需要PRIMARY KEY
。您可以使用UNIQUE KEY
查询
ALTER TABLE
ALTER TABLE position ADD UNIQUE KEY (a,b)