/ 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
Fejl i SQL forespørgsel
Fra : Phecdaret


Dato : 19-08-06 15:12

Hej NG

Jeg er igen kommet i problemer med en SQL forespørgsel. Den ser
sådan ud:


strSQL = "SELECT * FROM personer WHERE Brugernavn =' " &
Request.Querystring("X") & " ' "

Set rs = Conn.Execute(strSQL)


Værdien af Request.Querystring("X") er altid "1".


Jeg tjekker forespørgslen ved:


If rs.Eof Then
                     
Response.Write Request.Querystring("X")

Else

Response.Write rs("AccesLevel")


HER KOMMER DET UNDERLIGE:

Er strSQL skrevet som ovenfor, går forespørgslen under rs.Eof og
og bruger kommandoen Response.Write Request.Querystring("f") som
giver værdien 1. Den skriver altså "1".

Ændrer jeg derimod SQL-forspørgslen til:

strSQL = "SELECT * FROM personer WHERE Brugernavn ='1' "

går forespørgslen under Else og skriver værdien af
rs("AccesLevel").

I SQL-forespørgslen giver Request.Querystring("X") en værdi
forskellig fra 1, men under Else skrives værdien 1 med nøjagtig
samme kommando. Det giver ingen mening!!

Hvad er det jeg overser?!

Håber mit problem ikke er beskrevet for kryptisk

Mvh Kenneth

PS. Er det muligt at skjule værdierne i en querystring?

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

 
 
Jens Gyldenkærne Cla~ (19-08-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-08-06 20:58

Phecdaret skrev:

> Jeg er igen kommet i problemer med en SQL forespørgsel.

Standardsvar ved den slags problemer: udskriv den færdige
forespørgsel så du kan se hvad databasen kører. Se hvordan det kan
gøres her: <http://asp-faq.dk/article/?id=41> (eller se næste
svarblok).

> strSQL = "SELECT * FROM personer WHERE Brugernavn =' " &
> Request.Querystring("X") & " ' "

Her kan du tjekke forespørgslen ved at skrive
Response.write "strSQL: " & strSQL

- og evt. Response.End for at stoppe videre eksekvering.


> Værdien af Request.Querystring("X") er altid "1".

Gælder det generelt eller bare når det går galt? Hvis det generelt
gælder at X altid er 1, er der ingen grund til at overføre den i
quirystring.


> Jeg tjekker forespørgslen ved:

> If rs.Eof Then
>
> Response.Write Request.Querystring("X")

Du får mere information ved at udskrive strSQL.


> Er strSQL skrevet som ovenfor, går forespørgslen under rs.Eof og
> og bruger kommandoen Response.Write Request.Querystring("f")

Muligvis bare en skrivefejl her i indlægget - men du har X de
første tre gange i indlægget, men f her.

> som giver værdien 1. Den skriver altså "1".

Hvordan ved du at det ikke er rs("Accesslevel") der er 1? I din
udskrift har du ingen fast værdi, så du kan kun skelne mellem if-
og else-delen hvis du er helt sikker på at en værdi udskrevet det
ene sted ikke også kan være udskrevet det andet sted. Hvis du
udskriver en fast tekst (fx Response.write "I if-delen, X = " &
request.querystring("X")), er det langt lettere at se hvor du er
havnet.

> PS. Er det muligt at skjule værdierne i en querystring?

Ikke ordentligt. Man kan indlejre sidekaldet i en iframe eller
lignende så det ikke kan ses direkte i browseren, men det er meget
enkelt at finde frem til dem alligevel.
--
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

Phecdaret (20-08-2006)
Kommentar
Fra : Phecdaret


Dato : 20-08-06 09:23

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:


> Standardsvar ved den slags problemer: udskriv den færdige
> forespørgsel så du kan se hvad databasen kører.

> Her kan du tjekke forespørgslen ved at skrive
> Response.write "strSQL: " & strSQL

Hej Jens

Ovenstående trick med at udskrive værdien af strSQL havde jeg slet
ikke overvejet ( nok typist for nybegyndere ). Den er lynhurtig
til at lokalisere fejl. I mit tilfælde var der mellemrum mellem to
apostroffer.

Men nu virker det - mange tak for svaret.

Mvh Kenneth


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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste