我有一个动态产品xml文件,我需要从外部源加载并保存在数据库表中。现在我想使包含当前产品的 xml 文件与表中的内容保持同步。所以我想确保我在 xml 和 db 表中更新具有 ID 的产品,插入新产品并删除那些在 db 表中过时的产品(它们不在 xml 文件中)请参见下图
XML 文件映射Productid->
1 和 product-name->book、
Productid->2 和 Prouct-name->pen
现在下表
身份证名称1本书
3 铅笔
现在我想使用 xml 中的信息更新产品 ID 1,将 xml 中的产品 ID 2 插入表中并从表中删除产品 ID 3,因为它在 xml 中找不到
请任何帮助不胜感激。
由于您已经拥有所需过程的流程图,因此应该非常简单。
我没有进行任何数据清理/转义,因为您按照自己的要求进行操作。
XML FILE: (save it as testFeed.xml)
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>1</id>
<name>book</name>
</product>
<product>
<id>2</id>
<name>pen</name>
</product>
</products>
PHP Code:
<?php
$xml = simplexml_load_file( 'testFeed.xml' );
$xpath = $xml->xpath( '//product' );
$feed = array();
foreach( $xpath as $node ) {
$feed[(string)$node->id] = (string)$node->name; // id is key, name is value
}
// delete all entries from table where the table entries are not in the xml
$sql = 'DELETE FROM `table` WHERE id NOT IN
(' . implode( ',', array_keys( $feed ) ) . ')';
$run = mysql_query( $sql, $link );
//Now, insert/update - USE MySQL's "INSERT ... ON DUPLICATE UPDATE" feature
foreach( $xpath as $key => $node ) {
$sql = 'INSERT INTO `table` (id,name) VALUES ("'.$key.'","'.$node.'")
ON DUPLICATE KEY UPDATE name="'.$node.'";'
$run = mysql_query( $sql, $link );
}
?>
MySQL 插入 ...关于重复更新示例在这里。
希望这有帮助。