Php 使用pdo将MYSQL插入到重复密钥更新中

Php 使用pdo将MYSQL插入到重复密钥更新中,php,mysql,pdo,Php,Mysql,Pdo,(我只是尝试学习复制键语法) 我编写了一个查询,该查询应该将值插入表中,但如果存在条目,则应该进行更新 $reflinkUpdate = $dbh->prepare('INSERT INTO links (link_first_id, link_linked_id) VALUES (:sid, :tid) ON DUPLICATE KEY UPDATE link_first_id= :sid2, link_linked_id = :tid2'); $reflinkUpdate->bi

(我只是尝试学习复制键语法)

我编写了一个查询,该查询应该将值插入表中,但如果存在条目,则应该进行更新

$reflinkUpdate = $dbh->prepare('INSERT INTO links (link_first_id, link_linked_id) VALUES (:sid, :tid) ON DUPLICATE KEY UPDATE link_first_id= :sid2, link_linked_id = :tid2');
$reflinkUpdate->bindParam(":sid", $_POST['solo'], PDO::PARAM_INT);
$reflinkUpdate->bindParam(":tid", $_POST['reflink'], PDO::PARAM_INT);
$reflinkUpdate->bindParam(":sid2", $_POST['solo'], PDO::PARAM_INT);
$reflinkUpdate->bindParam(":tid2", $_POST['sel'], PDO::PARAM_INT);
我的代码每次插入entrys并且不更新。我做错了什么?

试着这样做:

$reflinkUpdate = $dbh->prepare('
INSERT INTO links (link_first_id, link_linked_id)
VALUES (:sid, :tid)
ON DUPLICATE KEY
UPDATE
  link_first_id = VALUES(link_first_id),
  link_linked_id = VALUES(link_linked_id)
');

值(字段名称)
指的是试图插入的值。

插入的字段是否具有唯一索引(或是表的主键)?他仍然插入一个entry@user3676560只有当重复条目是主键或唯一索引时,它才起作用。