php - 如何从mysql数据库中删除不在数组中的所有元素?

标签 php mysql

我有一个 xml 文件,其中包含我想要插入到 mysql 数据库中的数据。现在我的数据库中已经有了条目,因此应该更新这些条目,应该添加不存在的条目,并且 - 现在出现问题 - 应该删除数据库中但不在 xml 中的条目。所以我尝试创建 2 个数组,其中一个包含 xml 数据的一些比较值,例如 $array_new["some1"] = "test"; $array_new["some2] = "test2";

另一个包含旧数据,如 $array_old["some1"] = "something"; $array_old["some2"] = "test2";

现在我想比较这两个数组,并将两个数组中不存在的所有值添加到一个新数组中。我尝试使用 array_diff 但这只会将两个数组中都不存在的一个值添加到新数组中。但我需要将所有具有相同键的值放在一个新数组中,以便我可以删除它们。

有人知道如何实现这一目标吗?谢谢!

最佳答案

假设您的表具有唯一索引(主键)并且您的 xml 数据具有相同的可用键数据,请按照以下步骤操作:

1) 从表中删除不在数组中的所有记录:

DELETE FROM tablename WHERE unique_field NOT IN (<comma seperated list or keys>)

2) 运行 INSERT ... ON DUPLICATE KEY UPDATE 类型查询:

INSERT INTO tablename VALUES (a, b, c) ON DUPLICATE KEY UPDATE field1 = a, ...

关于php - 如何从mysql数据库中删除不在数组中的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8606387/

相关文章:

php - 初始化对象属性 - 如何正确执行

php - Facebook PHP SDK 报错

javascript - 在 jQuery 中创建 JSON 对象数组

php - 如何将 2 个表合并到第三个表 SQL 中而不覆盖?

php - 如何在另一个表中选择没有匹配条目的行,即使其中一个表是空的

php zend framework 日志 mysql 查询

mysql - 如何从 MYSQL 数据库实例自动生成 Rails 迁移类?

mysql - SQL:获取与日期时间最近的 N 行

mysql - 按时间对同一个表上的多个计数查询进行分组

mysql - 如何计算每个类别的职位的唯一点击次数