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

时间:2011-12-22 15:55:56

标签: 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,但这只会将两个数组中没有的值添加到新数组中。但是我需要在新数组中拥有所有具有相同键的值,以便我可以删除它们。

任何人都知道如何做到这一点?谢谢!

2 个答案:

答案 0 :(得分:3)

假设您的表具有唯一索引(主键)并且您的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, ...

答案 1 :(得分:0)

使用“not in”创建一个where子句,只有您创建标识符,例如implode(",", $array)