php脚本在一些有效的mssql查询上停止运行

时间:2011-03-15 18:02:07

标签: php sql-server

我创建了一个脚本来对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()的内容。在查询之前打印或回显的任何内容也不会出现在结果文件中。

我可以验证它是否连接到正确的数据库,因为我可以在同一个数据库中的表上运行一些其他查询,并通过脚本获得结果。

3 个答案:

答案 0 :(得分:1)

尝试切换到ODBC扩展名而不是MSSQL ext,当使用带有odbc_exec()的select查询时,它会挂起。找不到解决方法。

最后通过切换到PDO来实现它。

答案 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的情况下执行。希望这会缩短别人花在这个问题上的时间!