查询在SQL Server上运行,但不运行';用PHP编程
我为SQLServer编写了一个SQL查询,它在SQLServerManagementStudio中运行良好。但是,当我在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 =
$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吗?我将在周一首先尝试!希望我设置了远程连接:/