我已经开始在页面上出现错误,并且正在努力找出原因。我已经在Stack Overflow上搜索了相同的错误消息,并找到了一些人也得到了它,但是解决方案与我的解决方案非常不同。这是我收到的错误消息:
Microsoft ODBC 驱动程序的 OLE DB 提供程序错误"80040e14">
[Microsoft][ODBC SQL Server Driver][SQL Server]"="附近的语法不正确。
/测试页.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")
如果在错误发生之前运行以下代码,则很可能没有 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 注入