[英]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.