Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 Server上运行,但不运行';用PHP编程_Php_Sql_Sql Server - Fatal编程技术网

查询在SQL Server上运行,但不运行';用PHP编程

查询在SQL Server上运行,但不运行';用PHP编程,php,sql,sql-server,Php,Sql,Sql Server,我为SQLServer编写了一个SQL查询,它在SQLServerManagementStudio中运行良好。但是,当我在PHP代码中运行相同的查询时,它返回一个错误“在“=”处的语法不正确”。我曾经运行过不同的查询,之前运行得很好 $SQL = "SELECT MAX(EventTime) AS EventTime, UserID FROM [Net2Events].[dbo].[Events] e WHERE EventType = 20 AND Address =

我为SQLServer编写了一个SQL查询,它在SQLServerManagementStudio中运行良好。但是,当我在PHP代码中运行相同的查询时,它返回一个错误“在“=”处的语法不正确”。我曾经运行过不同的查询,之前运行得很好

$SQL = "SELECT MAX(EventTime) AS EventTime, UserID
    FROM [Net2Events].[dbo].[Events] e
    WHERE EventType = 20 AND
    Address = 5044830 AND
    NOT EXISTS (Select Max(EventTime) AS EventTime
                FROM [Net2Events].[dbo].[Events] e2
                WHERE  Address = 5042486 AND
                e2.EventTime > e.EventTime AND
                e2.UserId = e.UserId AND
                EventType = 20
                GROUP BY UserId)
    GROUP BY UserID";

尝试按如下方式运行查询:

$result = mssql_query('SELECT MAX(EventTime) AS EventTime, UserID
FROM [Net2Events].[dbo].[Events] e
WHERE EventType = 20 AND
Address = 5044830 AND
NOT EXISTS (Select Max(EventTime) AS EventTime
            FROM [Net2Events].[dbo].[Events] e2
            WHERE  Address = 5042486 AND
            e2.EventTime > e.EventTime AND
            e2.UserId = e.UserId AND
            EventType = 20
            GROUP BY UserId)
GROUP BY UserID');

试着把它全部放在一行。我知道它看起来很可怕,但它会帮助你看看你是否需要以不同的方式满足多行的字符串

$SQL = "SELECT MAX(EventTime) AS EventTime, UserID FROM [Net2Events].[dbo].[Events] e WHERE EventType = 20 AND Address = 5044830 AND NOT EXISTS (Select Max(EventTime) AS EventTime FROM [Net2Events].[dbo].[Events] e2 WHERE  Address = 5042486 AND e2.EventTime > e.EventTime AND e2.UserId = e.UserId AND EventType = 20 GROUP BY UserId) GROUP BY UserID";

如果它有效,那么你就缩小了问题的范围。您可以尝试在每行末尾添加一个空格。

尝试将“Address”列的所有实例都用方括号括起来。这是一个SQL Server关键字,可能会让驱动程序感到困惑

$SQL = "SELECT MAX(EventTime) AS EventTime, UserID
    FROM [Net2Events].[dbo].[Events] e
    WHERE EventType = 20 AND
    [Address] = 5044830 AND
    NOT EXISTS (Select Max(EventTime) AS EventTime
                FROM [Net2Events].[dbo].[Events] e2
                WHERE  [Address] = 5042486 AND
                e2.EventTime > e.EventTime AND
                e2.UserId = e.UserId AND
                EventType = 20
                GROUP BY UserId)
    GROUP BY UserID";

您是如何尝试运行查询的?$results=sqlsrv_query($conn,$SQL);请修改您的帖子,并添加您收到的准确完整的消息。目前,这是我关于该问题的唯一信息。我要到周一才能发布完整的错误行。那么,回答这个问题是不可能的。我使用的是sqlsrv,而不是mssql:/噢,天哪,是我的疏忽。有什么原因让你不得不使用sqlsrv吗?我将在周一首先尝试!希望我设置了远程连接:/