php - 关于重复键更新值;两次插入相同的值

标签 php mysql

我正在尝试插入一些值,如果有 DUPLICATE KEY UPDATEperson。我正在插入值,但它是在重复值而不是进行更新。输入字段是动态的,可以添加或删除值。但我正在努力避免重复值。如何插入新值,如果有重复键则更新字段?

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

<ul id="pq_entry_1" class="clonedSection">
        <li>
            <input id="person_fname_1" name="person_fname_1" placeholder="Person #1 - First Name" type="text" />
        </li>
        <li>
            <input id="person_lname_1" name="person_lname_1" placeholder="Last Name" type="text" />
        </li>
</ul>
<input type='button' id='btnAdd' value='add another Person' />
<input type='button' id='btnDel' value='delete Delete' />

PHP/Mysql查询

        //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++;
        }

查询后的表:

enter image description here

最佳答案

各种重复检查SQL

  • 替换成
  • 在重复时插入 ..
  • 插入忽略

当表有 Primary keyUNIQUE 索引时有效。我认为没有唯一索引。 (也许 person_id 是 AUTO_INCREMENT 的 PK)

那么,您可以发布您的 的创建声明吗?如果 person 没有 UNIQUE(person_fname, person_lname),您应该使用以下 sql 添加它:

ALTER TABLE person ADD UNIQUE (person_fname, person_lname);

关于php - 关于重复键更新值;两次插入相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342518/

相关文章:

php - 使用 CNG 在 c++ 应用程序中签署数据并在 php api 中验证

php - 使用按钮单击功能更改复选框输入名称

php 在 php 中比较 YYYY-mm-dd 字符串

php - 延迟几秒钟进行 301 重定向的最佳方法是什么?

php - 如果产品重量超过1000克,如何以公斤为单位显示

MySQL INT 含义

mysql - 如何以百分比的形式获取mysql匹配的结果?

sql - 根据某些列值复制行?

mysql - 根据其他列值划分列值

php - 使用 mysql pdo 中的选项创建选择