我创建了一个脚本来对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()的内容。在查询之前打印或回显的任何内容也不会出现在结果文件中。
我可以验证它是否连接到正确的数据库,因为我可以在同一个数据库中的表上运行一些其他查询,并通过脚本获得结果。
答案 0 :(得分:1)
答案 1 :(得分:0)
问题是结果中的日期类型,对日期数据类型使用强制转换。 例: 选择my_day,other_field FROM my_table 使用 SELECT转换(varchar(19),my_day,120)为my_day,other_field FROM my_table
使用格式化您的偏好
答案 2 :(得分:0)
在我的情况下,我使用PDO(dblib)检索浮点数,varchar(2),两个long和一个“money”。造成这种情况的货币价值是负面的 - 一种信用。我最后将money字段更改为float,查询将在没有ERR_EMPTY_RESPONSE的情况下执行。希望这会缩短别人花在这个问题上的时间!