我创建了一个脚本来在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