【问题标题】:ON DUPLICATE KEY UPDATE value; inserting same values twiceON DUPLICATE KEY UPDATE 值;两次插入相同的值
【发布时间】:2013-12-03 03:48:31
【问题描述】:

我正在尝试插入一些值,如果有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++;
        }

查询后的表格:

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    各种重复检查 SQL

    • REPLACE INTO
    • INSERT .. ON DUPLICATE
    • INSERT IGNORE

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

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

    ALTER TABLE person ADD UNIQUE (person_fname, person_lname);
    

    【讨论】:

    • 没错。您需要使用UNIQUE 约束来定义您的复制条件。
    • 这更有意义。在这种情况下是的,person_id 是自动递增的 PK。
    猜你喜欢
    • 2012-06-11
    • 2018-05-01
    • 2016-09-04
    • 1970-01-01
    • 2014-06-23
    • 2017-04-24
    • 1970-01-01
    • 2018-10-26
    • 2011-05-16
    相关资源
    最近更新 更多