SQL Server错误';80040e14';“附近有语法错误”;订单“;

SQL Server错误';80040e14';“附近有语法错误”;订单“;,sql,asp-classic,syntax-error,code-injection,Sql,Asp Classic,Syntax Error,Code Injection,我一直收到SQL Server错误“80040e14”,在关键字“ORDER”附近表示语法不正确。然而,它所指的那一行是下一行,这一行有“ORDER”这个词。有人能指出我在下面的sql代码中犯的语法错误吗?ASP是我在这个项目中一直使用的语言 SQL = " SELECT TS.ID, types"&_ " FROM tblTickets TS"&_ " WHERE TS.ID = "& Request("ticketid") &" ORD

我一直收到SQL Server错误“80040e14”,在关键字“ORDER”附近表示语法不正确。然而,它所指的那一行是下一行,这一行有“ORDER”这个词。有人能指出我在下面的sql代码中犯的语法错误吗?ASP是我在这个项目中一直使用的语言

SQL = " SELECT TS.ID, types"&_
      " FROM tblTickets TS"&_
      " WHERE TS.ID = "& Request("ticketid") &" ORDER BY dateof DESC"
设置RSticket=objConn.Execute(SQL)

所以,它在最后一行指出错误,而“顺序”在另一行

如果请求(“ticketid”)返回字符串值,则需要在其周围添加单引号:

SQL = " SELECT TS.ID, types"&_
      " FROM tblTickets TS"&_
      " WHERE TS.ID = '"& Request("ticketid") &"' ORDER BY dateof DESC"

ORDER BY将失败,因为dateof不是所选字段


请尝试使用
“WHERE TS.ID=“&Replace(Request(“ticketid”)、“”、“”)”和“ORDER BY 1 DESC”
谢谢大家,是的,我刚刚错过了&Request(“ticketid”)的单引号包装。现在它可以正常工作了。

您好!即使使用经典的asp,您也可以使用而不是字符串连接。(添加了单引号转义)我认为我的建议是正确的,但我可能是一个启用者。Damien_不相信的人是对的,使用参数更好,不仅因为SQL注入更安全,而且因为执行计划相同,它实际上可以使重复查询更快。您可以按未选择的字段排序。唯一不能这样做的时候是如果存在SELECT DISTINCT。如果是这种情况,则需要将Thessaman的答案标记为正确。仍然容易受到SQL注入的攻击。