'使用自动增量插入到'重复键'上

时间:2014-10-25 18:25:50

标签: php sql on-duplicate-key

我只是在两列(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();

2 个答案:

答案 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)