0

这是 ASP Classic 中的 SQL 查询:

mQry = "SELECT DISTINCT name FROM best WHERE invoice_num = "  & request.querystring("invoice_num") & " AND name LIKE '%" & request.querystring("org_name") & "%'"

我不确定这是否正确或什么。基于这个查询,我需要name根据两个输入参数显示或输出“”,即invoice_numorg_name。我总是收到此错误消息:

Microsoft OLE DB Provider for Oracle 错误“80040e07”ORA-01722:无效编号。

什么是正确的 ASP Classic SQL 查询语法?

4

2 回答 2

0

很可能您有自引用表单(即针对同一页面),并且您在执行该代码之前不检查表单是否已提交。

此代码将执行这样的检查,并且对 SQL 注入攻击有更好的保护:

Dim invoiceNumber
invoiceNumber = Request.QueryString("invoice_num")
If Len(invoiceNumber)>0 And IsNumeric(invoiceNumber) Then
    invoiceNumber = CLng(invoiceNumber)
    If invoiceNumber>0 Then
        mQry = "SELECT DISTINCT name FROM best WHERE invoice_num = "  & invoiceNumber & " AND name LIKE '%" & Replace(Request.Querystring("org_name"), "'", "''") & "%'"
        '...rest of the code here...
    End If
End If
于 2013-09-01T07:10:55.973 回答
0

Request.QueryString("myval") 读取一个名为“myval”的 URL 参数。

因此,如果您有一个名为 mypage.asp 的页面,那么您可以在 URL 中为其指定参数,如下所示:

mypage.asp?myval=test1234

所以对于上面的 URL,如果你调用 Request.QueryString("myval") 将会返回 "test1234"。

当您运行 ASP 页时,您确定要为查询中的两个参数指定 URL 参数吗?听起来他们是空白的。这对于字符串是可以的,但对于数值会失败。

Invoice_num 和 org_name 都应该在 URL 中指定。

于 2013-09-01T08:10:15.910 回答