[Microsoft][ODBC SQL Server 驱动程序][SQL Server]“=”附近的语法不正确

问题描述 投票:0回答:1

我开始在页面上收到错误,并且正在努力找出其原因。我在 Stack Overflow 上搜索了同样的错误消息,发现有些人也得到了它,但解决方案与我的非常不同。这是我收到的错误消息:

适用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e14”

[Microsoft][ODBC SQL Server 驱动程序][SQL Server]“=”附近的语法不正确。

/test-page.asp,第 97 行

这与 .asp 页面上的这一行相关:

set rsMainContact=oConn.execute 
    ("SELECT * FROM tbl_individual WHERE individual_id="&iMainContact)

现在奇怪的是,页面实际上显示了正确的数据,它从该表中获取了所需的所有数据。这就是为什么我不明白为什么会出现问题。

此外,当我在 MSSQL 中使用“SELECT * FROM tbl_individual WHERE individual_id="&iMainContact”语句运行查询时,将 &iMainContact 替换为实际变量,它工作得非常好。

有谁知道为什么会发生此错误?

如果您想知道各种变量来自哪里,那么这也是页面中的一些相关代码:

SET rsOrganisationPendingOrganic=Server.CreateObject("ADODB.RecordSet")
rsOrganisationPendingOrganic.CursorType=3
rsOrganisationPendingOrganic.Open sSQL, oConn
iOrganisationPendingOrganicCount=rsOrganisationPendingOrganic.RecordCount

iMainContact=rsOrganisationPendingOrganic("organisation_maincontact")
sql sql-server asp-classic
1个回答
0
投票

如果在错误发生之前运行以下代码,则您很可能没有 iMainContact 的值:

SET rsOrganisationPendingOrganic=Server.CreateObject("ADODB.RecordSet") 
rsOrganisationPendingOrganic.CursorType=3

rsOrganisationPendingOrganic.Open sSQL, oConn
iOrganisationPendingOrganicCount=rsOrganisationPendingOrganic.RecordCount

iMainContact=rsOrganisationPendingOrganic("organisation_maincontact")

您可以通过在执行失败的 sql 之前将 sql 写到屏幕上来证明这一点:

Response.Write "SELECT * FROM tbl_individual WHERE individual_id=" & iMainContact
Response.End

我也1000%同意lad2025,使用参数化查询来防范sql注入

© www.soinside.com 2019 - 2024. All rights reserved.