Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查询在SQL查询分析器上工作,但在PHP mssql_Query()上失败_Php_Sql_Sql Server - Fatal编程技术网

查询在SQL查询分析器上工作,但在PHP mssql_Query()上失败

查询在SQL查询分析器上工作,但在PHP mssql_Query()上失败,php,sql,sql-server,Php,Sql,Sql Server,我有一个具有多个连接的复杂MSSQL查询。当我使用SQL查询分析器进行查询时,它会在大约5分钟后返回结果。但是,当我使用PHPmssql\u query()函数进行查询时,它返回一个错误mssql\u query()failed,没有有用的信息 以下是到目前为止对这个问题的分析 php服务器的响应时间限制不是问题。时间限制设置为无限。事实上,这个查询在不同的生产服务器上大约30秒后返回结果 我尝试使用mssql_get_last_message()获取有关失败原因的更多详细信息。但到目前为止,运

我有一个具有多个连接的复杂MSSQL查询。当我使用SQL查询分析器进行查询时,它会在大约5分钟后返回结果。但是,当我使用PHP
mssql\u query()
函数进行查询时,它返回一个错误
mssql\u query()failed
,没有有用的信息

以下是到目前为止对这个问题的分析

  • php服务器的响应时间限制不是问题。时间限制设置为无限。事实上,这个查询在不同的生产服务器上大约30秒后返回结果

  • 我尝试使用mssql_get_last_message()获取有关失败原因的更多详细信息。但到目前为止,运气不好。我得到的只是“将数据库上下文更改为‘dbsdb’”,其中‘dbsdb’是我正在查询的数据库的名称

  • 这就是我正在使用的查询,如果这很重要的话

    SELECT L.[strStation], L.[nEntitlement1], L.[nEntitlement2], O.nOrders,
            L.[nEntitlement3], L.[nEntitlement4], S.[strFirm], S.[nStatus],
            S.[nFeatures], S.[nFeatures2], S.[nFeatures3], S.[strDescription]
    FROM   [tblLogin] AS L
    LEFT JOIN [tblStation] AS S ON L.[strStation] = S.[strStation]
         LEFT JOIN (
                       SELECT [strStation], COUNT(DISTINCT(nRecordId)) as nOrders
                       FROM   [tblOrder]
                       WHERE  [timeOrderDate] >= '2013-06-04' AND
                              [timeOrderDate] <= '2013-06-28'
                       GROUP BY strStation
                   ) AS O ON O.[strStation] = S.[strStation]
            WHERE  L.[timeLoginTime] >= '2013-06-04 00:00:00' AND
                   L.[timeLoginTime] <= '2013-06-28 23:59:59' AND
                   S.[strFirm] in ('FIRMA','FIRMB')
    
    编辑I

    我缩小到一个点。当我从SELECT子句中删除
    O.nOrders
    部分时,查询工作得非常好

    但是为什么

    编辑II


    这让我快发疯了。查询有时甚至与SELECT子句中的
    O.nOrders
    部分一起工作。这对我来说似乎完全是随机的,但我知道在这个世界上没有真正的随机……这应该是有原因的……

    那么你选择了你的数据库了吗<代码>mssql_选择_数据库(“yourdb”)您应该使用PDO。然后你可以用try-catch。@Akam-Yes。我添加了用于查询database@A.O.我希望我可以,但目前我没有选择,因为我们是在Windows和Linux上用MSSQL 2000开发的。用法:
    如果(!MSSQL\u select\u db('dbsdb',$link')死亡(var\u dump(MSSQL\u get\u last\u message())
    $link = mssql_connect('192.168.251.90', 'sa', '');
    if (!mssql_select_db('dbsdb', $link))
        var_dump(mssql_get_last_message());
    $query = mssql_query($sql, $link);