Foreach循环不会将所有记录从quickbooks插入MySQL数据库。

时间:2017-04-10 08:43:05

标签: php mysql foreach sql-insert quickbooks-online

我一直在使用Quickbooks PHP API,我想从quickbooks获取数据并使用PHP脚本保存在MYSQL中。

我已成功将Quickbooks与PHP连接,我已经完成了查询以获取数据。

  $Products = $ProductsService->query($Context, $realm, "SELECT * FROM item ");
foreach ($Products as $Product)
 {
    //First, we will retrieve the ID, and strip out any spaces/characters.  
    $id = $Product->getId();
    $ProductID = preg_replace("/[^0-9]/","",$id);

    echo('Customer Id=' . $ProductID. '<br>');


    //// test for product name
    if(!empty($Product->getName())){
        $ProductName = $Product->getName();
    } else {
        $ProductName= '';
    }

    //Insert customer into product tables
    $sql = "INSERT INTO products (ProductID__kp, ProductName) 

        VALUES ('".$ProductID."', 
                '".$ProductName."'

                )
                ON DUPLICATE KEY 
                    UPDATE ProductName = '".$ProductName."' ";

    $conn->query($sql);

}

上述脚本成功运行并将结果返回到数组中。

enter image description here

问题是插入声明。我在quickbooks中有1579种产品。但是当我运行上面的脚本时,只有97条记录被保存在MYSQL数据库中。

我不确定为什么它只能节省1579中的97个。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你实际上有两个不相关的问题:

默认情况下,QuickBooks Online API一次只能返回100条记录。

阅读文档:

您只能获得100条记录。您可以通过数组的大小来判断:

array(100)

您完全忽略了任何错误检查。

$conn->query($sql);

为什么不注意并发现任何错误?

然后您就知道查询是否失败。