php脚本在一些有效的mssql查询中停止

php脚本在一些有效的mssql查询中停止,php,sql-server,Php,Sql Server,我创建了一个脚本来在mssql数据库上执行一些select查询,但是该脚本似乎在某些查询上停止了,没有返回任何错误。浏览器从服务器接收到一个完全空的响应。在Firefox上,它会提示下载一个空白的.php文件;在Chrome上,它返回“错误324(网络::ERR\u EMPTY\u响应):未知错误”;在IE8上,它返回“页面无法显示” 问题是 $sql = "SELECT * FROM EmployeeHours WHERE (EmployeeId = '".$staff_id.

我创建了一个脚本来在mssql数据库上执行一些select查询,但是该脚本似乎在某些查询上停止了,没有返回任何错误。浏览器从服务器接收到一个完全空的响应。在Firefox上,它会提示下载一个空白的.php文件;在Chrome上,它返回“错误324(网络::ERR\u EMPTY\u响应):未知错误”;在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);
$sql=“选择*
从工作时间
其中(EmployeeId=“$staff_id.”)
和(TimeIn>DATEADD(第二个“.$week_start.”,转换为(DATETIME,'1970-01-01',102)))
和(超时<日期添加(第二个“.$week_end.”),转换(日期时间,'1970-01-01',102))
或超时为空)
UTCDATE订购增加了描述”;
$query=mssql\U查询($sql);
$staff\u id是一个简单的整数。$week\u start和$week\u end是unix时间戳

我认为这不是查询本身,因为它在MSSQL Server Management Studio中运行良好,并返回正确的数据。我还可以将查询简化为“从EmployeeHours中选择TOP 1*”,没有WHERE条件,但仍然失败

将错误报告设置为E_ALL无效。它不会执行任何超过mssql_查询()的操作。在查询之前打印或回显的任何内容也不会出现在结果文件中

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

尝试切换到扩展名而不是MSSQL ext,并且在使用odbc_exec()的select查询时,它将挂起。也没有找到解决办法

最后,通过切换到使其工作。

尝试切换到扩展而不是MSSQL ext,并且在使用odbc_exec()的select查询时,它将挂起。也没有找到解决办法


最后切换到。

问题是结果中的日期类型,请对日期数据类型使用cast。 例子: 从my_表中选择my_day,other_字段 使用 从my_表中选择convert(varchar(19),my_day,120)作为my_day,other_字段


使用您的首选项格式

问题在于结果中的日期类型,请对日期数据类型使用强制转换。 例子: 从my_表中选择my_day,other_字段 使用 从my_表中选择convert(varchar(19),my_day,120)作为my_day,other_字段


使用您的首选格式

在我的例子中,我使用PDO(dblib)检索一个浮点、一个varchar(2)、两个long和一个“money”。造成这种情况的货币价值是负的——一种信用。我最终将money字段更改为float,查询将在没有ERR\u EMPTY\u响应的情况下执行。希望这能缩短其他人在这个问题上的时间

在我的例子中,我使用PDO(dblib)检索一个float、一个varchar(2)、两个long和一个“money”。造成这种情况的货币价值是负的——一种信用。我最终将money字段更改为float,查询将在没有ERR\u EMPTY\u响应的情况下执行。希望这能缩短其他人在这个问题上的时间

每次你用unescaped
$variable
s创建sql时,上帝都会杀死一只小猫。@cHao它们在我发布的脚本之前就被转义了。使用MSSQL扩展不是一个好主意,因为PHP5.3不可用,你可以使用官方的Microsoft驱动程序(这里有)哪个功能更丰富,但有一些奇怪的问题,像大多数微软API。什么web服务器?(IIS?Apache?)web服务器的错误日志显示了什么?我以前见过这样的问题,当时我编写的一个脚本实际上导致Apache出现segfault,因此响应从未完全发送。@NuclearDog Apache。错误日志没有显示该脚本中的任何内容。每次您使用unscaped
$variable
s创建sql时,上帝都会杀死一只小猫。@cHao它们在我发布的脚本之前被转义。使用MSSQL扩展不是一个好主意,因为它在PHP 5.3中不可用,您可以使用官方的Microsoft驱动程序(这里有)哪个功能更丰富,但有一些奇怪的问题,像大多数微软API。什么web服务器?(IIS?Apache?)web服务器的错误日志显示了什么?我以前见过这样的问题,当时我编写的一个脚本实际上导致Apache出现segfault,因此响应从未完全发送。@NuclearDog Apache。错误日志没有显示该脚本中的任何内容。