我有两个表:
people:
peopleID (PK)
name
peopleaddress:
addressID (PK)
peopleID (fK)
address
addresstype
...other fields...
一个人可以有更多地址。
我有一个添加新人(和地址)的表单,还有一个用于编辑信息的表单。当我加载编辑表单时,它将从数据库中获取有关该人的信息,并将其放在value =“”字段中。
现在,当我提交编辑表单时,我使用2条sql命令:
$stmt = $conn->prepare("DELETE from peopleaddress WHERE peopleID=?");
和
$stmt = $conn->prepare("INSERT INTO peopleaddress (peopleID, addresstype, active, street.....) VALUES (?, ?, ?, ....)");
它运作良好,唯一的缺点是addressID每次更新都会更改,并且往往会快速增长。
我是用正确的方式来做还是在php或更好的sql中有一种说法:
如果存在新地址»更新
如果不存在»插入
如果现有地址的所有字段为空»删除
谢谢你的帮助!
最佳答案
您正在寻找的是:“ INSERT ... ON DUPLICATE KEY UPDATE”
INSERT INTO peopleaddress (peopleID, addresstype, active, ...) VALUES (1,2,3, ...)
ON DUPLICATE KEY UPDATE addresstype=2, active=3, ...;
如果该地址已经存在于数据库中,它将找到该地址,如果可以的话,将对其进行更新。否则,它将插入。
您可能需要重新制作“?”替换。