我有一个xml文件,其中包含我想要插入mysql数据库的数据。现在我已经在我的数据库中有条目,所以应该更新这些条目,不应该添加现有条件 - 现在出现问题 - 应该删除数据库中但不在xml中的条目。所以我尝试创建2个数组,其中一个包含xml数据的一些比较值,例如
$array_new["some1"] = "test";
$array_new["some2] = "test2";
另一个包含旧数据,例如$array_old["some1"] = "something"; $array_old["some2"] = "test2";
现在我想比较这两个数组,并将所有不在两者中的值添加到新数组中。我尝试使用array_diff,但这只会将两个数组中没有的值添加到新数组中。但是我需要在新数组中拥有所有具有相同键的值,以便我可以删除它们。
任何人都知道如何做到这一点?谢谢!
答案 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)