我有两个表:
people:
peopleID (PK)
name
peopleaddress:
addressID (PK)
peopleID (fK)
address
addresstype
...other fields...
一个人可以有多个地址。 我有一个用于添加新人(和地址)的表格和另一个用于编辑信息的表格。当我加载编辑表单时,它从数据库中获取关于那个人的信息并将它们放在字段值 =""中。
现在,当我提交编辑表单时,我使用了 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, ...;
如果地址已经在数据库中,它将找到地址并更新它(如果可以)。否则,它会插入。
您可能需要重新处理您的 '?'替换。
关于php mysql 插入、删除或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888172/