2013-10-18 1 views
0

사용자가 HTML 양식에 입력 한 내용에 따라 데이터베이스의 데이터를 표시하는 ADO 코드를 작성하려고합니다. 나는 변수로 사용자로부터 입력을 설정하고이 변수를 사용하여 데이터베이스를 쿼리하도록 내 sql을 설정했지만 시도하지는 않았다. 내 코드는 현재 다음과 같습니다ADO는 변수로 정의 된 필터를 사용하여 데이터베이스에서 데이터를 검색하지 않습니다.

<!DOCTYPE html> 
<html> 
<title> 
Query 
</title> 
<body> 
<form name="teacherReg" action="http://hr-computing/public/AlexS/Tests/UserQuery.asp" method="POST"> 
<input type="text" name="firstnameQuery"> 
<input type="submit" value="submit"> 
     </form> 
<% 
Query=request.form("firstnameQuery") 
set conn=Server.CreateObject("ADODB.Connection") 
conn.Open ="{private}" 
set rs=Server.CreateObject("ADODB.recordset") 
sql="SELECT firstname, lastname, PASSWORD FROM teachers WHERE firstname = Query" 
rs.Open sql,conn 


%> 
<% 
do until rs.EOF 
    for each x in rs.Fields 
    Response.Write(x.name) 
    Response.Write(" = ") 
    Response.Write(x.value & "<br>") 
    next 
    Response.Write("<br>") 
    rs.MoveNext 
loop 

rs.close 

%> 


</body> 
</html> 

나는 현재 오류 받고 있어요

[MySQL의] [ODBC 3.51 드라이버] [mysqld를 '80040e14가'ODBC 드라이버 오류

Microsoft OLE DB 공급자 -5.0.45-community-nt] 'where 절'에서 알 수없는 열 'Query'

왜 작동하지 않는지 이해가 가지 않습니다. 어떤 도움이 필요합니까?

답변

1

당신은

하지만 같은

sql="SELECT firstname, lastname, PASSWORD FROM teachers WHERE firstname = '" & Query & "'"

...

Dim Conn As ADODB.Connection 
Dim Cmd As ADODB.Command 
Dim Parm As ADODB.Parameter 
Dim Rset as ADODB.Recordset 

Set Conn = New ADODB.Connection 
Cn.Open "{private}" 
Set Cmd = New ADODB.Command 

Cmd.ActiveConnection = Conn 
Cmd.CommandText = "SELECT firstname, lastname, PASSWORD FROM teachers WHERE firstname = ?;" 
Cmd.CommandType = adCmdText 
Set Parm = Cmd.CreateParameter("firstname", adVarChar, adParamInput) 
Parm.Value = Query 
Cmd.Parameters.Append Parm 
Set Rset = Cmd.Execute 

을보십시오 당신이이로 변경하여 실행 할 수있는 명령

query의 값을 전달하지 않습니다 모두가 SQL 주입과 좋은 생각이 아니라고 말할 것입니다