导入XML和跳过错误(PHP)

时间:2014-08-17 20:41:35

标签: php mysql xml error-handling

我有一个CRON工作,每晚运行以通过多个XML文件更新我们的库存系统(来自外部源)。

然而,正如偶尔的情况一样,错误出现在XML中(我无能为力 - 第三方提供此功能)。

当发生错误时,脚本停止运行,不再处理任何文件。有没有办法,如果遇到错误,仍然导入剩余的文件?

这是我的代码:

<?php include 'connect.php'; 


$sql = "DELETE FROM stock WHERE allow_keep!='1'";
mysql_query($sql);

//clear stock table then loop through and add all active users


$query = "SELECT * from users where active='1'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){ 


$xml = simplexml_load_file(“users/XML_FILE_”.$row['id'].".xml");

foreach($xml->children() as $child)
{


$myquery="REPLACE into stock set 
StockID='" . $child->stockid . 
"', Make='" . addslashes($child->make) . 
"', Model='" . addslashes($child->model) . 
"', image='" . $child->image_url_1 . 
"', details='" . addslashes($child->description) . 
"', price='" . $child->price . 
"'";

$result2=mysql_query($myquery) or die(mysql_error());   




 }

}


?>

感谢我能得到的任何帮助!

1 个答案:

答案 0 :(得分:3)

如果是simplexml那个中断过程的人,只需告诉deal with errors internally而不是输出它们

libxml_use_internal_errors(true);

$xml = simplexml_load_file(“users/XML_FILE_”.$row['id'].".xml");
if($xml) {
    // format is fine, try to load it.
} else {
    // leave something in your error log or something
}

如果它是mysql,那么你可以将你的替换查询包装在try / catch块中。

BTW,不要使用mysql函数。使用mysqli或(更好)PDO功能。如果您害怕学习曲线,从PDO :: exec开始,它不是PDO中最优雅的部分,但如果您习惯于使用变量插值手动进行查询,那么它几乎可以替代。

尝试在中期建立准备好的查询,它将获得十倍的回报。