在重复键更新时使用insert ...进行Upsert

时间:2015-03-30 17:13:39

标签: php mysql upsert

有许多教程,但我还没能以某种方式使它工作。

我正在尝试更新我的表格,如果除了列之外的所有数据都匹配我通过表单插入的数据。我在后端使用php作为脚本语言和mysql。

$name = $_POST['name'];
$phone = $_POST['phone'];
$genders = $_POST['gender'];
$hno = $_POST['hno'];
$sector = $_POST['sector'];
$city = $_POST['city'];
$state = $_POST['state'];
$pin = $_POST['pin'];
$ailt = $_POST['ailt'];

$q="INSERT INTO manage (name, phone, gender, hno, sector, city, state, pin, ailt)
VALUES ('$name', '$phone', '$genders', '$hno', '$sector','$city','$state','$pin','$ailt')
ON DUPLICATE KEY UPDATE ailt='$ailt'";

我尝试做的是插入数据(如果数据尚未存在),或者除了ailt之外的所有字段都匹配时,请使用新的ailt更新该行

我被困在这几个小时。看起来很简单,但我不能让它工作,因为行继续插入。他们不会更新,即使我保持所有数据相同并为其提供不同的价值。

1 个答案:

答案 0 :(得分:0)

鉴于评论充斥着SQL注入,我再也不会对此产生影响。

您正在寻找的语法是UPDATE ailt=VALUES(ailt)

请参阅the docs中以&#34开头的段落;您可以使用VALUES(col_name)函数"有关更多详细信息。

编辑:关于行"继续插入"的评论,可能是因为你没有在数据库上有一个PRIMARY或UNIQUE键,可以识别到哪一行更新。请参阅我上面链接的文档的第一段,以供参考。