PHP虽然嵌套的foreach完成后循环没有完成

时间:2013-11-11 20:50:29

标签: php loops

在内部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 "++++++++++++++++++++";
    }

1 个答案:

答案 0 :(得分:3)

这可能会导致问题:

if (mysql_query($query, $conn) or die(mysql_error())) {

die()命令作为if语句的一部分进行处理。

相反,我会做这样的事情:

$q=mysql_query($query, $conn) or die(mysql_error());
if ($q) {