Parameterisering af databasekald med ASP og ADO
HejJeg har forsøgt at læse guiden af Softspot og herefter omskrive noget af min kode. Det er ikke helt nemt når man ikke har fatte alt hvad guiden beskriver :) Kan jeg få noget hjælpe?
Jeg har oprettet en global.asa fil med
<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4" -->
Koden før:
<!--#include file="db.inc"-->
id=request.querystring("id")
strSQL = "SELECT * FROM noter where id=" & id
Set rs = Conn.Execute(strSQL)
#Jeg går udfra at det er her det kan være farligt med SQL injections. Korrekt?
Koden efter:
<!--#include file="db.inc"-->
id=request.querystring("id")
sql = "SELECT * FROM noter where id= ?"
Set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = adCmdText
cmd.Parameters.Append
cmd.CreateParameter("@id", adInteger, adParamInput, 4, id)
set rs = cmd.Execute()
Jeg forstår ikke helt linie med CreateParameter. Kan den blive uddybet? Er det felterne fra basen der skal defineres eller hur?
Ovenstående giver mig:
Microsoft VBScript compilation error '800a0414'
Cannot use parentheses when calling a Sub
/sql/note_edit.asp, line 28
cmd.CreateParameter("@id", adInteger, adParamInput, 4, id)
----------------------------------------------------------^