繁体   English   中英

如何使用自动更新将此xml提要导入到sql中?

[英]How to import this xml feed into sql with auto update?

我有一个小问题,我在互联网上找不到任何结果。

我的老板从他的产品提供商那里得到了一个xml提要,他让我将xml链接中的所有数据插入到mysql网站数据库中。

所以我开始这样:

#database
$sql= new MySQL();
//connect to db   
$host = 'localhost';   
$user = 'user';   
$pass = 'pass';   
$db = 'dbname';     

$sql = mysql_connect ($host, $user, $pass) or die("Error - Unable to Connect");     

mysql_select_db($db) or die("Error- Unable to find database");                     

// specify url of xml file   

$url = "thehttpofurlproducts";         

// get xml file contents   

$xml = simplexml_load_file($url);   

foreach ($xml->Items->Item as $item) {
    $query = "INSERT INTO products (id,code,info) VALUES ($item->prod_id, $item->prod_code,$item->prod_info)";
    $result = mysql_unbuffered_query($query) or die ("Error in query: $query. ".mysql_error());
}  
mysql_close($connection);

他还希望我将其他许多字段导入sql db。 他想实时执行此操作,所以我使用cronjobs。 但是问题是如何实时更新产品。 当我第二次运行时,它给我类似重复键等的错误。

xml就是这样,并且它会不断更新:

<Message>
<EntityType>Products</EntityType>
<Items>
<Item>
<prod_id>235</prod_id>
<prod_code>xzq</prod_code>
<prod_name>Dogs</prod_name>
<prod_info><prod_info/>
<isstoc>false</isstoc>
<UM>UM</UM>
<VAT>20.00</VAT>
<prod_category>Puppies</prod_category>
<prod_subcategory>--</prod_subcategory>
<Onlineprice>0.00</Onlineprice>
<Stock>0.00</Stock>
<Weight/>
</Item>
</Items>
</MESSAGE>

看一下MySQL的ON DUPLICATE KEY UPDATE子句 它允许您更新值,而不是插入具有相同值的新行。

在你的例子中,你可以做

...
$query = "INSERT INTO products (id,code,info) VALUES ($item->prod_id, $item->prod_code,$item->prod_info) ON DUPLICATE KEY UPDATE code = $item->prod_code, info = $item->prod_info";
...

为了安全起见,我还建议您先清理查询的参数,然后再将其附加到查询中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM