簡體   English   中英

php腳本在某些有效的mssql查詢中停止死亡

[英]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()之后的任何操作。 查詢之前打印或回顯的任何內容也不會出現在結果文件中。

我可以驗證它是否已連接到正確的數據庫,因為我可以對同一數據庫中的表運行一些其他查詢,並通過腳本獲取結果。

嘗試切換到ODBC擴展而不是MSSQL ext,並且將選擇查詢與odbc_exec()一起使用時會掛起。 也沒有找到解決辦法。

最終通過切換到PDO使它起作用。

問題是結果是日期類型,對日期數據類型使用強制轉換。 示例: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM