gpt4 book ai didi

php - 导入 XML 和跳过错误 (PHP)

转载 作者:行者123 更新时间:2023-11-29 01:57:17 25 4
gpt4 key购买 nike

我有一个每晚运行的 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());




}

}


?>

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

最佳答案

如果中断进程的是 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 block 中。

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

尝试着眼于在中期构建准备好的查询,这将带来十倍的返回。

关于php - 导入 XML 和跳过错误 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com