2011-10-12 5 views
2

절대적인 긴급 상황에서 웹 사이트를 탐색하고 매개 변수가있는 쿼리를 추가하려고합니다. 나는 초보자이며 방금 그들에 대해 배웠습니다.MySQL/Classic ASP - 매개 변수가있는 쿼리

내 문제는 연결 유형에 대해 거의 알지 못한다는 것과 다른 연결 방법을 사용하고있는 모든 예가 나를 혼란스럽게합니다. 특히 DB에 연결하는 방식을 변경하고 싶지는 않습니다. 많은 페이지에 있기 때문에 더 안전 할 수 있도록 쿼리를 업데이트하고 싶습니다.

Set connContent = Server.CreateObject("ADODB.Connection") 
connContent.ConnectionString = "...blah...blah...blah..." 
connContent.Open 

이이 매개 변수를 사용하여 SQL 비트입니다 : : 내 DB에 연결 한 방법

입니다

username = Trim(Request("username")) 
connContent.Prepared = True 

Const ad_nVarChar = 202 
Const ad_ParamInput = 1 

SQL = " SELECT * FROM users WHERE (username=?) ; " 

Set newParameter = connContent.CreateParameter("@username", ad_nVarChar, adParamInput, 20, username) 
connContent.Parameters.Append newParameter 

Set rs = connContent.Execute(SQL) 

If NOT rs.EOF Then 
     ' Do something... 
End If 

rs.Close 

그것은 분명 작동하지 않습니다하지만 난 내가 할 수있는 경우 알 필요가 실제로 내가 가지고있는 연결을 사용하여 이것을 달성합니까 아니면 뭔가를 놓치고 있습니까? 두 번째 조각은에

내가 나가서 내가 익숙 해요 뭔가를 디버깅 다음 이일 지출 전에, 나는 ... 나는 곧 정상 궤도에 적어도 해요 알고

답변

3

코드를 싶습니다 수정 아닌 Connection 객체에 새로운 ADODB.Command 객체에 적용되어야한다 : 그런데

username = Trim(Request("username")) 

'-----Added this----- 
Dim cmdContent 
Set cmdContent = Server.CreateObject("ADODB.Command") 

' Use this line to associate the Command with your previously opened connection 
Set cmdContent.ActiveConnection = connContent 
'-------------------- 

cmdContent.Prepared = True 

Const ad_nVarChar = 202 
Const ad_ParamInput = 1 

SQL = " SELECT * FROM users WHERE (username=?) ; " 

Set newParameter = cmdContent.CreateParameter("@username", ad_nVarChar, ad_ParamInput, 20, username) 
cmdContent.Parameters.Append newParameter 

cmdContent.CommandText = SQL 
Set rs = cmdContent.Execute 

If NOT rs.EOF Then 
     ' Do something... 
End If 

rs.Close 

가 대신 ad_ParamInputadParamInput의 맞춤법과 오타가 있었다 (내 예 수정).

+0

대단히 감사합니다. 정말 고맙습니다. 하나의 질문, 왜 "SQL 데이터 형식이 범위를 벗어났습니다"라는 오류가 발생하는지 생각해보십시오. – TheCarver

+0

새로운 질문으로 질문하십시오. –

+0

좋아, 나는 MySQL이 (ad_nVarChar = 202)를 좋아하지 않는다는 것을 알아 차렸다. 그래서 나는 그것을 (ad_varChar = 200)으로 바꿨다. 다시 한번 감사드립니다. – TheCarver

관련 문제