php mysql 插入、删除或更新

标签 php mysql sql

我有两个表:

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/

相关文章:

php - mysqli select 查询不能正常工作

python - Django 的 syncdb 失败,MySQL errno : 150

sql - 从日期时间减去一天

php - Laravel的上下迁移方法如何工作?

javascript - 使用 AJAX 和 jQuery 在 div 内调用 php 页面(也有循环)

php - 来自电子邮件地址的低级安全散列

sql - 如何在 SQL Server 中删除或截断表?

sql - 用“ALL”代替“Group By”和“Having”查询

PHP 准备语句...将变量绑定(bind)为 REGEXP 中的数字范围?

php - Paypal 快速结帐-引用付款