Avatar billede passiflora Juniormester
14. september 2010 - 15:49 Der er 7 kommentarer og
1 løsning

Hvilke tegn mon der skal rundt om

Hej

Jeg kan simpelthen ikke gennemskue hvilke pinger/paranteser/tegn der skal rundt om kolonne ... for at mit database opslag kommer til at virke ...
please help me ...
Tak

<%
verdi = request("verdi")
kolonne = request("kolonne")
Set rs = Server.CreateObject("ADODB.RecordSet")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/ge_database/ge_pc.mdb")
strsql = "SELECT * FROM plant_care where kolonne =('"& verdi &"') ORDER BY latname ASC"
rs.Open strSQL, strDSN, 1
%>
Avatar billede keysersoze Guru
14. september 2010 - 16:54 #1
Hvis du kom med din fejl ville det hjælpe os lidt - men normal, hvis man skal escape "dumme" kolonnenavne, sætter man det i firkantet parentes;

[kolonne]
Avatar billede tjens Nybegynder
14. september 2010 - 19:09 #2
Du kan debugge/hjælpe dig selv ved at outputte strsql til websiden, inden du bruger den.

Så problemet er at kolonne også er variabel?
Forslag:
strsql = "SELECT * FROM plant_care where " & kolonne & "  =  '" & verdi & "' ORDER BY lastname ASC"

Dette kræver dog at kolonne altid er et alfafelt, p.g.a. apostrofferne omkring verdi.

Husk dog at validere kolonne og verdi inden du bruger dem i en sql. Ellers kan hackere lave grumme ting mod din database.

ps: Jeg har skrevet lastname, da det lignede en stavefejl i din originale sql
Avatar billede passiflora Juniormester
14. september 2010 - 21:40 #3
Hej tjens

Ja, tjens, kolonnen er også en variabel. Jeg skal kunne vælge hvilken kolonne udtrækket skal tages fra.

Tester det lige i morgen, syns jeg har prøvet alle muligheder.

Sødt af dig at foreslå en rettelse, jeg bruger latname som forkortelse på latinsk navn ... det er til en plantedatabase.
Avatar billede passiflora Juniormester
15. september 2010 - 10:27 #4
Hej tjens

... og "&kolonne&" var jo rigtig ...

Sender du et svar ...

Tak

(Næste træk bliver at sorterer alle latnavn dubletter fra)
Avatar billede tjens Nybegynder
15. september 2010 - 11:21 #5
Godt at det virker.

Har du husket at tilføje validering kolonne og verdi?

Hvis nej så prøv at kalde din side med: ?kolonne=blabla&verdi='+(drop table plant_care)+' ;-)
Avatar billede passiflora Juniormester
15. september 2010 - 12:52 #6
Nej, har ikke fået lavet validering ...

Sætter jeg dit forslag ind, får jeg blot svaret ...

ODBC driver does not support the requested properties.

Hvad havde du mon forventet ...?

Tak for hjælpen
/Søren
Avatar billede tjens Nybegynder
15. september 2010 - 16:10 #7
Jeg havde forventet at du kunne se at #5 forslaget var en dårlig joke:
drop table plant_care
kunne jo slette hele tabellen fra databasen, og dermed gøre dig opmærksom på at validering af input er nødvendigt inden det bruges i SQL-sætninger.

Men jeg er glad for at det ikke virkede.
Avatar billede passiflora Juniormester
15. september 2010 - 16:27 #8
Også jeg ... ;o)
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