我正在尝试插入一些值,如果有 DUPLICATE KEY UPDATE
表 person
。我正在插入值,但它是在重复值而不是进行更新。输入字段是动态的,可以添加或删除值。但我正在努力避免重复值。如何插入新值,如果有重复键则更新字段?
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++;
}
查询后的表:
最佳答案
各种重复检查SQL
替换成
在重复时插入 ..
插入忽略
当表有 Primary key
或 UNIQUE
索引时有效。我认为没有唯一索引。 (也许 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/