2013-08-29 6 views
0

Это SQL запросов в ASP Classic:ASP Классический SQL запросов с двумя параметрами

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

Я не уверен, если это правильно или что. На основании этого запроса мне нужно отобразить или вывести «name» на основе двух входных параметров, которые являются invoice_num и org_name. Я всегда получал это сообщение об ошибке:

Microsoft OLE DB Provider for Oracle error '80040e07' ORA-01722: неверное число.

Каким будет синтаксис запроса ASP Classic SQL для этого ..?

+0

Перед выполнением оператора SQL: 'Response.Write (mQry)'. Опубликуйте полученный текст здесь. – gvee

+4

прочитал о SQL-инъекциях и перепроектировал ваш запрос и способ работы с SQL-выражениями в вашем приложении – ulluoink

+0

Это не имеет никакого смысла: Response.write (mQry) вообще –

ответ

0

Скорее всего, у вас есть форма саморегуляции (т. Е. Таргетинг на ту же страницу), и вы не проверяете, была ли форма отправлена ​​до выполнения этого кода.

Этот код будет выполнять такую ​​проверку, а также иметь лучшую защиту от атак SQL Injection:

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 
0

Request.QueryString ("myval") считывает параметр URL под названием "myval".

Так что, если бы вы страница называется mypage.asp, то вы можете задать параметры для него в URL, как это:

mypage.asp myval = test1234

Так что с выше URL, если вы? вызов Request.QueryString («myval») вернет «test1234».

При запуске страницы ASP вы уверены, что задаете параметры URL для двух параметров в своем запросе? Похоже, что они пустые. Это нормально для строки, но не будет иметь числовое значение.

Invoice_num и org_name должны указываться в URL-адресе.

Смежные вопросы