我用下面的过程:使用Consolibyte PHP的Quickbooks的devkit,InvoiceServices查询返回false
- 我创建了一个跨越90天之内的发票的数组,从今天回到90天前。
- 我转换这些发票到逗号分隔的字符串
$invoiceString
,用单引号围绕每个数字 - 用于
$InvoiceService = new QuickBooks_IPP_Service_Invoice();
创建一个新的InvoiceService对象。 - 创建下面的查询,从我们的QB的检索一批发票:
$invoices = $InvoiceService->query($Context, $realm, "SELECT * FROM Invoice WHERE DocNumber IN (" . $invoiceString . ") MAXRESULTS 1000");
这将返回false。但是,如果我将发票数量首次收集到的时间范围限制在60天或更短时间内,但是61天或更长时间,它将返回错误。查询将返回的天数有限吗?我在查询中丢失了什么?
在此先感谢您的帮助!
编辑
以下是错误代码后我会收到包含调试语句:
ERROR: 3100: [message=InternalServerError; errorCode=003100; statusCode=500, ]
RESPONSE: HTTP/1.1 500 Server Error Server: nginx Date: Thu, 13 Apr 2017 14:40:44 GMT Content-Type: text/xml Content-Length: 350 Connection: keep-alive Keep-Alive: timeout=5 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <IntuitResponse time="2017-04-13T07:40:44.030-07:00" xmlns="http://schema.intuit.com/finance/v3"> <Fault type="SERVICE"> <Error code="3100"> <Message>message=InternalServerError; errorCode=003100; statusCode=500</Message> </Error> </Fault> </IntuitResponse>
我不知道哪个查询你要求。我已经包含了使用InvoiceServices对象发送的查询。以前的任何SQL查询都只用于创建我在InvoiceService批量查询中使用的invoiceString。该查询只返回约数组的数组。 368发票号码,我然后使用创建invoiceString,逗号分隔,每个发票号码包围单引号。
我找不到任何错误代码列表中的错误代码3100。
你是否检查过它是否记录错误(我不熟悉语法)?查询引擎不支持'BETWEEN DATE_SUB(CURDATE(),INTERVAL 90 DAY)和CURDATE()'之类的东西吗? –
我的另一个猜测是字符串可能太长。这应该显示在日志中。 –
这不是一个有效的SQL查询:“SELECT * FROM Invoice WHERE DocNumber IN(”。$ invoiceString。“它是SQL查询的一部分,但我们不能确定你正在做什么或者重现了这一点,因为我们看不到$ invoiceString的设置。在任何情况下,如果你确定你的SQL查询是有效的,你应该用Intuit提交支持票 - 这是来自Intuit服务器的错误,你可以在响应中看到。 –