gpt4 book ai didi

php - 将 xml 产品加载到 mysql 数据库中,更新存在 productid 的位置,插入新的位置并删除 db 中不在 xml 中的 productid

转载 作者:行者123 更新时间:2023-11-29 06:59:02 26 4
gpt4 key购买 nike

我有一个动态产品 xml 文件,我需要从外部源加载该文件并将其保存在数据库表中。现在我想让包含当前产品的 xml 文件与表中的内容保持同步。所以我想确保我在 xml 和 db 表中使用 ID 更新产品,插入新产品并删除 db 表中过时的产品(它们不在 xml 文件中)见下图
XML文件映射

Productid->1 and product-name->book,
Productid->2 and Product-name->pen

下表

身份证名
1 本书
3支铅笔

现在我想用 xml 中的信息更新产品 ID 1,将 xml 中的产品 ID 2 插入表中,并从表中删除产品 ID 3,因为它在 xml 中找不到

如有任何帮助,我们将不胜感激。

最佳答案

由于您已经有了所需流程的流程图,因此它应该非常简单。

我不会进行任何数据清理/转义,因为您会根据您的要求进行。

XML 文件:(将其保存为 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代码:

<?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 INSERT ... ON DUPLICATE UPDATE这里的例子。

希望这对您有所帮助。

关于php - 将 xml 产品加载到 mysql 数据库中,更新存在 productid 的位置,插入新的位置并删除 db 中不在 xml 中的 productid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11147737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com