Foreach 循环不会将 quickbooks 中的所有记录插入到 MySQL 数据库中。
Foreach Loop does not insert all records from quickbooks to MySQL database.
我一直在使用 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);
}
上面的脚本成功地 运行s 和 returns 产生了数组。
问题是插入语句。我在 quickbooks 中有 1579 种产品。但是当我 运行 上面的脚本时,只有 97 条记录被保存在 MYSQL 数据库中。
我不确定为什么它只保存了 1579 个中的 97 个。
提前致谢。
你实际上有两个不相关的问题:
仅限 QuickBooks Online APIs return 默认情况下一次 100 条记录。
阅读文档:
您只能返回 100 条记录。你可以通过数组的大小来判断:
array(100)
您完全忽略了任何错误检查。
$conn->query($sql);
您为什么不观察并捕获发生的任何错误?
然后您就会知道查询是否失败。
根据 Quickbooks 文档,如果您 运行 这个
,它将 return 100 条记录
$Products = $ProductsService->query($Context, $realm, "SELECT * FROM item");
相反,您可以使用 MAXRESULTS
。你可以看看下面的代码行。
$Products = $ProductsService->query($Context, $realm, "SELECT * FROM item MAXRESULTS 9999");
我一直在使用 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);
}
上面的脚本成功地 运行s 和 returns 产生了数组。
问题是插入语句。我在 quickbooks 中有 1579 种产品。但是当我 运行 上面的脚本时,只有 97 条记录被保存在 MYSQL 数据库中。
我不确定为什么它只保存了 1579 个中的 97 个。
提前致谢。
你实际上有两个不相关的问题:
仅限 QuickBooks Online APIs return 默认情况下一次 100 条记录。
阅读文档:
您只能返回 100 条记录。你可以通过数组的大小来判断:
array(100)
您完全忽略了任何错误检查。
$conn->query($sql);
您为什么不观察并捕获发生的任何错误?
然后您就会知道查询是否失败。
根据 Quickbooks 文档,如果您 运行 这个
,它将 return 100 条记录$Products = $ProductsService->query($Context, $realm, "SELECT * FROM item");
相反,您可以使用 MAXRESULTS
。你可以看看下面的代码行。
$Products = $ProductsService->query($Context, $realm, "SELECT * FROM item MAXRESULTS 9999");