/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Parametre til execute sql
Fra : Hans Christian Bayer


Dato : 19-01-03 15:50

Jeg er ved at lave et log-in system og har lavet en form, der
post'er brugenavn og password til en fil, hvor scriptet vil
sammenligne informationerne med brugerdata i en Access database.

Som test har jeg brugt databasen tutorial på html hjemmesiden.

min kode ser således ud:


'ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
'Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)};"
DSN = DSN & "DBQ=" & Server.MapPath("/tutorial.mdb")
'Åben databaseforbindelsen
Conn.Open DSN

'SQL forespørgsel
'Definer to variale, der skal opsamle brugernavn og password fra
login formularen
dim strNavn
dim strPassword

strNavn = request.form.item("login")
strPassword = request.form.item("password")

'Definer en variabel, der indeholder et sql udtryk, der udvælger
fra databasen
strSQL = "Select * from personer Where Fornavn = strNavn AND
Efternavn = strPassword"

'Udfør forespørgslen (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)


Når jeg submit'er brugernavn og password fra login formen får jeg
følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters.
Expected 2.

/login-check.asp, line 32

svarende til, at det er execute commandoen, der er noget galt
med.

Hvad er det for nogle parametre, der skal indsættes og med
hvilken syntaks?






--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (19-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-01-03 22:40

Hans Christian Bayer skrev:

> strNavn = request.form.item("login")
> strPassword = request.form.item("password")

Note: Du behøver ikke at skrive .item - Request.Form("foo") og
Request.Form.item("foo") giver samme resultat.

> strSQL = "Select * from personer Where Fornavn = strNavn AND
> Efternavn = strPassword"

Her går det galt. Du skal indsætte værdierne af dine variable i
sql-sætningen - ovenfor bruger du blot deres navne. Samtidig skal
værdierne sættes i anførselstegn (fordi det er tekststrenge) - det
er på grund af de manglende anførselstegn du får den nuværende
fejlmeddelelse.

Hvis vi starter med at sætte anførselstegnene ind, ser kodelinjen
sådan ud:

   strSQL = "Select * from personer Where Fornavn = 'strNavn' AND
   Efternavn = 'strPassword'"

Med denne formulering kan din kode godt køre, men den er ikke så
meget værd før det er værdierne fra din form der bruges som
udvælgelseskriterium.

For at sætte indholdet af dine variable ind kan du benytte
strengsammensætning i asp.
Linjen:
   x = "Hej med" & " dig"

- tildeler værdien "Hej med dig" til x.

For at få dine variabler puttet ind i sqlsætningen klipper vi den
over de to steder de skal puttes ind:

   strSQL = "Select * from personer Where Fornavn = '" & strNavn
   & "' AND    Efternavn = '" & strPassword & "'"

Nu er sætningen sådan set køreklar. Dog bør du sikre dig mod fejl
og misbrug ved at tjekke dine variable for anførselstegn. Et enkelt
anførselstegn inde i en variabel kan få databasekaldet til at fejle
- eller i værste fald få databasen til at gøre noget andet end det
du forventer. Det er en god ide at vænne sig til altid at lave
sådan et tjek når man henter valgfrie tekster fra en form. Hvis du
erstatter de to variabeltildelingslinjer (citeret øverst i dette
indlæg) med følgende:

   strNavn = Replace(request.form("login"), "'", "''")
   strPassword = Replace(request.form("password"), "'", "''")

- er du sikker på at slippe for problemer med anførselstegn.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408836
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste