php - Foreach 循环不会将 Quickbooks 中的所有记录插入 MySQL 数据库。

标签 php mysql foreach sql-insert quickbooks-online

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

我已成功使用 PHP 连接 Quickbooks,并且已完成查询以获取数据。

  $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 个产品。但是当我运行上面的脚本时,MYSQL 数据库中只保存了 97 条记录。

我不知道为什么它只节省了 1579 个中的 97 个。

提前致谢。

最佳答案

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

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

阅读文档:

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

数组(100)

您根本忽略了任何错误检查。

$conn->query($sql);

为什么不观察并捕获发生的任何错误呢?

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

关于php - Foreach 循环不会将 Quickbooks 中的所有记录插入 MySQL 数据库。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43318528/

相关文章:

javascript - ajax表中的排序函数

mysql - 在 Laravel Eloquent 中使用 group by 的子查询

php - 直接从Mysql查询数据生成报告(使用groupby、count)

php - 选择 MySQL 中某个记录的下一个出现位置

php - 在上传时将图像转换为所有尺寸与通过 php 请求调整大小

MySQL 查询从涉及 2 列的每个组中获取最后一条记录

php - PHP MySQLnotice undefined variable ,形式为

c# - 为什么 C# 编译器将字符串类与 foreach 语句分开处理

java.lang.ClassCastException : java. util.Vector 无法转换为我的类

scala - 在 Scala 中检查 foreach 中的条件