Php 关于重复密钥更新值;插入相同的值两次

Php 关于重复密钥更新值;插入相同的值两次,php,mysql,Php,Mysql,我正在尝试插入一些值,如果存在重复的键更新,则更新表person。我正在插入值,但它正在重复这些值,而不是执行更新。输入字段是动态的,可以添加或删除值。但我试图避免重复的价值观。如何插入新值?如果有重复的键,则如何更新字段 Html/(未包含jquery函数将生成更多输入字段) 查询后的表格: 所有类型的重复检查SQL 替换为 INSERT。。重复时 插入忽略 当表具有主键或唯一索引时工作。我认为没有唯一的索引。(可能person\u id是自动增量的主键) 那么,你能发布你的人的创建声明吗

我正在尝试插入一些值,如果存在重复的键更新,则更新表
person
。我正在插入值,但它正在重复这些值,而不是执行更新。输入字段是动态的,可以添加或删除值。但我试图避免重复的价值观。如何插入新值?如果有重复的键,则如何更新字段

Html/(未包含jquery函数将生成更多输入字段)

查询后的表格:


所有类型的重复检查SQL

  • 替换为
  • INSERT。。重复时
  • 插入忽略
当表具有
主键
唯一
索引时工作。我认为没有唯一的索引。(可能
person\u id
是自动增量的主键)

那么,你能发布你的
人的创建声明吗?如果person没有
唯一性(person\u fname,person\u lname)
则应使用以下sql添加它:

ALTER TABLE person ADD UNIQUE (person_fname, person_lname);

这是正确的。您需要使用
UNIQUE
约束定义复制条件。这更有意义。在这种情况下,是,
person\u id
是自动递增的主键。
        //Insert or Update Values 
        $f = 1;
        while(isset($_POST['person_fname_' . $f]))
        {

            $person_fname = $_POST['person_fname_' . $f];
            $person_lname = $_POST['person_lname_' . $f];


$query_init3 = "INSERT INTO person (academy_id, first_name, last_name) VALUES (:id,:person_fname,:person_lname) 
        ON DUPLICATE KEY UPDATE academy_id=:id, first_name=:person_fname, last_name=:person_lname";
        $query_prep3 = $db_con->prepare($query_init3);
            $query_prep3->execute(array(
                "id" => $id,
                "person_fname" => $person_fname,
                "person_lname" => $person_lname
            ));

            $f++;
        }
ALTER TABLE person ADD UNIQUE (person_fname, person_lname);