Avatar billede fastpoint Nybegynder
25. marts 2005 - 21:26 Der er 20 kommentarer og
1 løsning

Hjælp til sql sætning

Item cannot be found in the collection corresponding to the requested name or ordinal.

Den fejl får jeg i følgende kode


key = Request.QueryString("key")
valg = Request.QueryString("valg")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM list WHERE '" & rs("valg") & "' = '" & rs("key") & "'"

Det er meningen "valg" bestemmer hvilken kolonne der søges i og "key" er søgeordet.

De begge hentes fra en Form hvor "Valg" er nogen valgmuligheder i en komboboks
Avatar billede fastpoint Nybegynder
25. marts 2005 - 21:28 #1
kan se url'en ser sådan her ud

asp?valg=tlf&key=00000000

så den er vel rigtig nok? tlf er en kolonne i min database
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 21:34 #2
Hvis du vil gøre det på den måde skal du nok glemme alt om rs på det sted og

strSQL = "SELECT * FROM list WHERE " & request.querystring("valg") & " = '" & request.querystring("key") & "'"

...og så har du et oplagt mål for hackere der vil udnytte muligheden for sql-injection
Avatar billede fastpoint Nybegynder
25. marts 2005 - 21:37 #3
tester lige:) den brokker sig ikke så tilføjer lige noget mere til databasen.
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 21:39 #4
Fint nok, men du vil da ikke bruge den til noget i virkeligheden, vel?
Avatar billede fastpoint Nybegynder
25. marts 2005 - 21:41 #5
Det skal jeg, men overhovedet ikke i offentlig, men kun i administrationsdelen af min side så alle sider er password protected.

Og det virker forresten:) point?
hvordan ville man ellers gøre det hvis den sql sætning er farlig
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 22:18 #6
Ingen point til mig, tak.

Du skulle teste at det kun var lovlige felter, eller på anden måde sikre at sql-sætningen ikke kunne laves om.
Avatar billede fastpoint Nybegynder
25. marts 2005 - 22:40 #7
kan du hjælpe mig med en sidste ting? prøver at gøre det samme her men den går ikke rigtigt

strSQL = "SELECT ID, firmanavn FROM kunde WHERE omrode = " & Trim(Request.Form("omrode")) & " AND (firmnavn LIKE '%" & strKeyword & "%' )"

det er denne del jeg selv har sat ind.

WHERE omrode = " & Trim(Request.Form("omrode")) & "


får denne fejl

Too few parameters. Expected 2.
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 22:45 #8
strSQL = "SELECT ID, firmanavn FROM kunde WHERE omrode = '" & Trim(Request.Form("omrode")) & "' AND (firmnavn LIKE '%" & strKeyword & "%' )"
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 22:46 #9
og måske hedder den ikke firmnavn
Avatar billede fastpoint Nybegynder
25. marts 2005 - 22:53 #10
hmm... nu var fejlen

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

Den skal kigge i kolonnen "firmanavn" den findes (ligger i tabellen kunde) og så skal betingelsen være, at omrode er det samme, som det der bliver requested.

omrode henter jeg fra en komboboks hvis det gør nogen forskel. måske skal den gemmes i en variabel som strKeyword?

strKeyword = Trim(Request.Form("searchword2"))
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 22:55 #11
Og hvad skriver du - og hvad er typerne af felterne?
Avatar billede fastpoint Nybegynder
25. marts 2005 - 22:58 #12
firmanavn og omrode er begge af datatypen text i databasen.

i den der form hvor jeg indtaster søgekriterier er det et textfield og jeg bare skriver "push" for at teste. omrode er vælger man i en komboboks
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 22:59 #13
Men hvordan ser den sql-sætning ud, som du siger giver fejl?
Avatar billede fastpoint Nybegynder
25. marts 2005 - 23:00 #14
Sådan så den oprindeligt ud

strSQL = "SELECT ID, firmanavn FROM kunde WHERE (firmanavn LIKE '%" & strKeyword & "%' )"


nu ser den sådan her ud (den du lige lavede)

strSQL = "SELECT ID, firmanavn FROM kunde WHERE omrode = '" & Trim(Request.Form("omrode")) & "' AND (firmnavn LIKE '%" & strKeyword & "%' )"
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 23:01 #15
Og du har læst: Kommentar: erikjacobsen 25/03-2005 22:46:08
Avatar billede fastpoint Nybegynder
25. marts 2005 - 23:02 #16
når du siger den mener du vel om kolonnen firmanavn findes? jeg er helt sikker, men tester lige den gamle sql sætning
Avatar billede fastpoint Nybegynder
25. marts 2005 - 23:03 #17
hmm den gamle virker lige med det samme! skal jeg vise dig den html kode hvor man indtaster sine søge ord?
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 23:04 #18
Nej, det er ikke det jeg skriver 22:46:08 - læs det lige igen.
Avatar billede fastpoint Nybegynder
25. marts 2005 - 23:05 #19
pis! tester igen! den hedder selvfølgelig firmanavn
Avatar billede fastpoint Nybegynder
25. marts 2005 - 23:06 #20
Guldmedalje til dig:) Der fik du mig *G* det virker!

mange gange tak!!
Avatar billede erikjacobsen Ekspert
25. marts 2005 - 23:09 #21
;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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