我創建了一個腳本來在mssql數據庫上執行一些選擇查詢,但腳本似乎在某些查詢中停止了,而沒有返回任何錯誤。瀏覽器收到來自服務器的完全空的響應。在Firefox上,它會提示下載一個空白的.php文件;在Chrome上返回「錯誤324(net :: ERR_EMPTY_RESPONSE):未知錯誤。」;並在IE8上返回「頁面無法顯示」。php腳本在一些有效的mssql查詢中停止了
查詢是
$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()的東西。在查詢沒有出現在結果文件中之前打印或回顯的任何東西。
我可以驗證它連接到正確的數據庫,因爲我可以在同一個數據庫中的表上運行一些其他查詢並通過腳本獲取結果。
每當你用非轉義的'$ variable's創建sql時,神會殺死一隻小貓。 – cHao 2011-03-15 18:07:12
@cHao它們在我發佈的腳本位之前被轉義。 – Samutz 2011-03-15 18:11:05
使用MSSQL擴展並不是一個好主意,它從PHP 5.3開始不可用,您可以使用官方Microsoft驅動程序[SQLSRV](http://sqlsrvphp.codeplex.com/)(這裏您有[API文檔] (http://msdn.microsoft.com/en-us/library/cc296152%28v=sql.90%29.aspx)),這是功能豐富得多,但有一些奇怪的問題,像大多數微軟的API。 – Terseus 2011-03-15 18:36:46