ASP Classic SQL Query有两个参数

时间:2013-08-29 07:52:42

标签: sql asp-classic

这是ASP Classic中的SQL查询:

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

我不确定这是正确的还是什么。根据此查询,我需要根据nameinvoice_num这两个输入参数显示或输出“org_name”。我总是收到此错误消息:

  

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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中指定。