我用下面的過程:使用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服務器的錯誤,你可以在響應中看到。 –