[英]php script stops dead on some valid mssql queries
我創建了一個腳本來對mssql數據庫執行一些選擇查詢,但是該腳本似乎在某些查詢上停止運行,而沒有返回任何錯誤。 瀏覽器收到來自服務器的完全空的響應。 在Firefox上,它提示您下載空白的.php文件; 在Chrome上返回“錯誤324(net :: ERR_EMPTY_RESPONSE):未知錯誤”。 並在IE8上返回“無法顯示頁面”。
查詢是
$sql = "SELECT *
FROM EmployeeHours
WHERE (EmployeeId = '".$staff_id."')
AND (TimeIn > DATEADD(second, ".$week_start.", CONVERT(DATETIME, '1970-01-01', 102)))
AND (TimeOut < DATEADD(second, ".$week_end.", CONVERT(DATETIME, '1970-01-01', 102))
OR TimeOut IS NULL)
ORDER BY UTCDateAdded DESC";
$query = mssql_query($sql);
$ staff_id是一個簡單的int。 $ week_start和$ week_end是Unix時間戳。
我不認為這是查詢本身,因為它可以在MSSQL Server Management Studio中正常運行並返回正確的數據。 我也可以將查詢簡化為“ SELECT TOP 1 * FROM EmployeeHours”,沒有任何WHERE條件,但仍然失敗。
將error_reporting設置為E_ALL無效。 它不會執行mssql_query()之后的任何操作。 查詢之前打印或回顯的任何內容也不會出現在結果文件中。
我可以驗證它是否已連接到正確的數據庫,因為我可以對同一數據庫中的表運行一些其他查詢,並通過腳本獲取結果。
問題是結果是日期類型,對日期數據類型使用強制轉換。 示例:SELECT my_day,other_field FROM my_table使用SELECT convert(varchar(19),my_day,120)作為my_day,other_field FROM my_table
使用您喜歡的格式
在我的情況下,我正在使用PDO(dblib)檢索浮點數,varchar(2),兩個long和一個“ money”。 造成這種情況的貨幣價值為負數-信用額。 我最終將money字段更改為float,並且查詢將在沒有ERR_EMPTY_RESPONSE的情況下執行。 希望這會縮短其他人在此問題上花費的時間!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.