我有一点问题,我无法在互联网上找到任何结果。
我的老板从他的产品提供商处获得了xml,他让我将xml链接中的所有数据插入到mysql网站db。
所以我从这样开始:
#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>
答案 0 :(得分:0)
看看MySQL's ON DUPLICATE KEY UPDATE
clause。它允许您更新值,而不是插入具有相同值的新行。
在你的例子中,你可以做到
...
$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";
...
为了安全起见,我建议您在将查询附加到查询之前对其进行清理。