导入XML和跳过错误(PHP)

托曼福德

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

但是,在偶尔的情况下,XML中会出现错误(我对此无能为力-第3方提供此功能)。

当确实发生错误时,脚本将停止并且不再处理任何文件。有没有一种方法,如果遇到错误,仍然可以导入其余文件?

这是我的代码:

<?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());   




 }

}


?>

感谢我可以从中获得的任何帮助!

ffflabs

如果它是simplexml,它会中断该过程,则只需告诉它内部处理错误,而不是将其输出

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块中。

顺便说一句,不要使用mysql函数。使用mysqli或(更好)的PDO函数。如果您担心学习曲线,请从PDO :: exec开始,它不是PDO最优雅的部分,但是如果您习惯于使用变量插值手动进行查询,那么它实际上是替代品。

尝试在中期建立针对性的查询,这将获得十倍的回报。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章