Avatar billede sago Nybegynder
24. august 2002 - 22:56 Der er 11 kommentarer og
1 løsning

ASP og WHERE i SQL

Hej, jeg har et problem jeg ikke kan se hvorfor egentlig eksisterer.

Det er et login-script, og jeg får "username" og "password" fra en anden side.

Men når jeg udfører denne SQL linie:

strSQL = "SELECT * FROM login WHERE password=" & Request.Form("username")

Så får jeg denne fejl:

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

[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'sago'.

/login.asp, line 13

Det er hvis username = sago. Hvorfor får jeg denne fejl? Jeg har et andet script helt magen til, bortset fra at jeg bruger et tal i min WHERE clause (det er et id-nummer, dog på en anden table)

Hvad skal jeg gøre for at få det til at virke? på forhånd tak.
Avatar billede eagleeye Praktikant
24. august 2002 - 22:58 #1
Det skal ' omkring tekst i SQL

strSQL = "SELECT * FROM login WHERE password= '" & Request.Form("username") & "'"
Avatar billede thesurfer Nybegynder
24. august 2002 - 23:00 #2
yep.. det skal være som eagleeye sagde :)
Avatar billede sago Nybegynder
24. august 2002 - 23:02 #3
Synes ellers jeg prøvede det, men jeg må have glemt noget. Takf or svaret.

Men nu får jeg denne fejl...

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

[Microsoft][ODBC SQL Server Driver][SQL Server]The text, ntext, and image data types cannot be used in the WHERE, HAVING, or ON clause, except with the LIKE or IS NULL predicates.

/login.asp, line 13

Betyder det bare at jeg ikke kan bruge ntext når jeg bruger WHERE? Synes det lyder lidt mærkligt? (det er MS SQL)
Avatar billede eagleeye Praktikant
24. august 2002 - 23:06 #4
fejlen '80040e14' betyder typisk man har stavet et kolonnenavn forkert. Det kan evt også være fordi password er reserveret ord så prøv at sætte [] omrking:

strSQL = "SELECT * FROM login WHERE [password]= '" & Request.Form("username") & "';"
Avatar billede sago Nybegynder
24. august 2002 - 23:10 #5
Nej, det hjalp desværre ikke. Jeg checkede kolonnenavnene igen, de er stavet rigtigt.
Avatar billede eagleeye Praktikant
24. august 2002 - 23:16 #6
Nu er jeg ikke kendt med SQL Sever men den skriver noget med text data type og LIKE så prøv dette:

strSQL = "SELECT * FROM login WHERE password LIKE '" & Request.Form("username") & "';"
Avatar billede sago Nybegynder
24. august 2002 - 23:22 #7
Ja, nu virkede det, tak for hjælpen.

Men er det ikke lidt "farligt" i et login system hvis der er to brugernavne der minder om hinanden?
Avatar billede eagleeye Praktikant
24. august 2002 - 23:24 #8
Ja men hvis man ikke bruger wildchars så skulle den virke som = ..
Findes der ikke en type som heddder VChar eller char ??? som kan bruges hvor man angiver en max længde på kolonnen.
Avatar billede sago Nybegynder
24. august 2002 - 23:27 #9
Jo, det er der. Jeg må prøve at ændre det.
Avatar billede eagleeye Praktikant
24. august 2002 - 23:27 #10
En anden ting i et login system er det meget vigtigt at ændre et ' til to '' i username og password da et ' bliver toldet som start og slut på en streng, men to bliver tolket rigtigt eks Ole's bil.. HVis du i brugernavn ikke tillader ' kan du ændre ' til indenting "":


Når man bruger ' omkring tekst i SQL så er det altid en god ide at lave et ' om til to '' så man ikke let kan "hakke" sig ind på din side. For man kan nemlig udnytte ' til at afsluttte en streng.. Så din SQL skulle se ud i stil med:

strSQL = "SELECT * FROM login WHERE password LIKE '" & Replace(Request.Form("username"), "'", "''") & "'"
Avatar billede sago Nybegynder
25. august 2002 - 00:33 #11
Ja, det er jeg klar over, men jeg tager det i små trin ad gangen ;)

Men tak for koden :)
Avatar billede sago Nybegynder
25. august 2002 - 16:08 #12
Jeg ændede det til varchar, og nu virker det fint med =.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester