【发布时间】:2013-11-12 04:55:15
【问题描述】:
内部 foreach 循环完成后,外部 while 循环永远不会恢复。当内部完成时,文件向命令报告,就好像它已经完成一样。它从不回显“+++++++”。
该脚本旨在从 api 中提取一些数据并将该数据保存到表中,该 api 以 1000 为一组返回记录,因此外部 while 循环提取多组 1000。该脚本多次返回“已保存”但绝不是'++++++'。有什么想法吗?
while ($iterations > 0) {
$results = json_decode(file_get_contents("http://foo.bar?start=$start$limit=1000"), true);
foreach ($results['SearchResult']['Records'] as $result) {
//search table
$query = "SELECT id from sometable where name = '".$result['something']."'";
$res = mysql_query($query, $conn) or die(mysql_error());
$branch = mysql_fetch_assoc($res) or die(mysql_error());
//save to table
$query = "INSERT INTO `table` some values)";
if (mysql_query($query, $conn) or die(mysql_error())) {
echo 'SAVED';
}
}
$start = $start+1000;
$iterations--;
echo "++++++++++++++++++++";
}
【问题讨论】:
-
你在哪里定义 $iterations?
-
停止使用 mysql 扩展。使用 mysqli 或 PDO。
-
不要使用
mysql_函数,因为它们已被弃用。请改用mysqli或PDO -
您的 die() 调用之一是否可能被调用?您是否尝试省略它们以查看输出,或者日志中是否有任何错误?
-
仍在尝试了解大局。您说“已保存”获取返回了很多次。你的桌子呢?他们真的在更新吗?您看到任何信息还是只看到“已保存”一词?