在重复键更新时使用插入...更新插入

Upsert using insert... on duplicate key update

那里有很多教程,但我无法以某种方式使它起作用。

如果除列外的所有数据与我通过表单插入的数据相匹配,我正在尝试更新我的 table。我使用 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 更新该行。

我已经被困在这个问题上几个小时了。看起来很简单,但我无法让它工作,因为行不断插入。它们不会更新,即使我保持所有数据相同并为 ailt 设置不同的值。

鉴于评论充斥着SQL注入,我不会再碰它了。

您要查找的语法是 UPDATE ailt=VALUES(ailt)

有关详细信息,请参阅 the docs 中以 "You can use the VALUES(col_name) function" 开头的段落。

编辑:关于您对行 "keep inserting" 的评论,这可能是因为您在数据库上没有可以识别要更新的行的 PRIMARY 或 UNIQUE 键。请参阅我上面链接的文档的第一段以获取更多参考。