/ 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
hjæælp.... <!>
Fra : Esben Uth


Dato : 09-09-02 08:39

hmm da jeg ikke kunne skrive videre på det andet indlæg jeg havde
lavet blev jeg jo nød til at oprette et nyt ...

Når man modtager data fra en form og skal indsætte data til en
database R koden : strSQL = "Insert into personer (Fornavn)
values('" & Request.Form("Fornavn") & "')"

men hvad R koden for at indsætte flere af gangen har prøvet alt
muligt men det virker ikke....

- EzzeR



--
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~ (09-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-09-02 09:16

Esben Uth skrev:

> hmm da jeg ikke kunne skrive videre på det andet indlæg jeg havde
> lavet blev jeg jo nød til at oprette et nyt ...

Næ - du kunne have lavet en ny opfølgning på mit indlæg
(<news:Xns9283E64ABF7A3jcdmfdk@212.242.40.196>) eller eventuelt dit
eget <news:algaea$f8e$1@sunsite.dk>).

Men skidt nu med det.


> Når man modtager data fra en form og skal indsætte data til en
> database R koden : strSQL = "Insert into personer (Fornavn)
> values('" & Request.Form("Fornavn") & "')"
>
> men hvad R koden for at indsætte flere af gangen har prøvet alt
> muligt men det virker ikke....

Læste du hvad jeg skrev i sidste indlæg? Specielt de linjer
herunder:

| Du skal lave én insert-sætning til én post. SQL-syntaksen er:

| INSERT INTO <tabelnavn> (<felt1>, <felt2>, ...)
| VALUES (<værdi1>, <værdi2>, ...)

Med dine tabel- og feltnavne bliver det noget i retning af:

INSERT INTO users (brugernavn, password, navn, email, hjemmeside)
VALUES ('<brugernavn>', '<password>', '<navn>', '<email>',
'<hjemmeside>')

Indholdet i de kantede paranteser skal erstattes med de variabler
du har de respektive værdier liggende i - eller eventuelt bare
Request.Form(<feltnavn>).

Som jeg også skrev i sidste indlæg så er det en rigtig god ide (tm)
at udskrive din sql-sætning inden du sender den afsted med
conn.execute. Hvis der er noget galt så vis os den færdige sql-
streng - ikke kun hvordan du opbygger den.

--
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

Esben Uth (09-09-2002)
Kommentar
Fra : Esben Uth


Dato : 09-09-02 12:27

Det vil så sige at koden bliver :

INSERT INTO users (brugernavn, password, navn, email, hjemmeside)
VALUES ('
<Request.form(brugernavn)>', '
<Request.form(password)>', '
<Request.form(navn)>', '
<Request.form(email)>', '
<Request.form(hjemmeside)>')

eller hvad ?

--
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~ (09-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-09-02 12:40

Esben Uth skrev:

> Det vil så sige at koden bliver :
>
> INSERT INTO users (brugernavn, password, navn, email,
> hjemmeside) VALUES ('
> <Request.form(brugernavn)>', '
> <Request.form(password)>', '
> <Request.form(navn)>', '
> <Request.form(email)>', '
> <Request.form(hjemmeside)>')
>
> eller hvad ?

Næsten . "<>"-erne skal ikke med - de var kun ment som
illustration af at det var variabelværdier. Og så er du stadig nødt
til at bruge strengsammensætning med "&". Prøv noget i retning af:

Dim strSQL

strSQL = "INSERT INTO users (brugernavn, password, navn, email,
hjemmeside) VALUES ('"
strSQL = strSQL & Request.form(brugernavn) & "', '"
strSQL = strSQL & Request.form(password) & "', '"
strSQL = strSQL & Request.form(navn) & "', '"
strSQL = strSQL & Request.form(email) & "', '"
strSQL = strSQL & Request.form(hjemmeside) & ")"

' Her kommer en vigtig debug-linje. Udkommenter den når siden
' fungerer som den skal, men brug den hvis der er problemer:

Response.write (strSQL)

' Kør forespørgslen gennem connection-objektet:

conn.execute (strSQL)


Du bør stadigvæk overveje at sikre dig mod de fejl der kommer hvis
en bruger indtaster enkelt anførselstegn i et felt.

--
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

Esben Uth (09-09-2002)
Kommentar
Fra : Esben Uth


Dato : 09-09-02 19:10

> Dim strSQL
>
> strSQL = "INSERT INTO users (brugernavn, password, navn, email,
> hjemmeside) VALUES ('"
> strSQL = strSQL & Request.form(brugernavn) & "', '"
> strSQL = strSQL & Request.form(password) & "', '"
> strSQL = strSQL & Request.form(navn) & "', '"
> strSQL = strSQL & Request.form(email) & "', '"
> strSQL = strSQL & Request.form(hjemmeside) & ")"

hmm så skriver den bare :
Tekniske oplysninger (for supportteknikere)

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
Strengkonstanten er uafsluttet
/test/indsaet.asp, line 15, column 63
strSQL = "INSERT INTO users (brugernavn, password, navn, email,
--------------------------------------------------------------^
Ved du hvad der R galt ?

> Du bør stadigvæk overveje at sikre dig mod de fejl der kommer hvis
> en bruger indtaster enkelt anførselstegn i et felt.

mener du at jeg skal lave sådan at man ikke kan skrive det samme 2
gange?

- EzzeR

--
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

Jørn Andersen (09-09-2002)
Kommentar
Fra : Jørn Andersen


Dato : 09-09-02 19:27

On Mon, 9 Sep 2002 18:09:46 +0000 (UTC), Esben Uth <admin@ezzer.dk>
wrote:

>Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
>Strengkonstanten er uafsluttet
>/test/indsaet.asp, line 15, column 63
>strSQL = "INSERT INTO users (brugernavn, password, navn, email,
>--------------------------------------------------------------^
>Ved du hvad der R galt ?

Formentlig har du et linieskift efter "email," - det skal fjernes.


--
Jørn Andersen,
Brønshøj

Jakob Møbjerg Nielse~ (09-09-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 09-09-02 22:13

Esben Uth wrote:
> Ved du hvad der R galt ?

Jeg har i hvert fald en ide: Prøv at læse
http://www.html.dk/tutorials/asp/ lidt grundigere.

Husk at når man sender beskeder i en nyhedsgruppe, så er der mange
programmer der bryder linjerne omkring 70 tegn. Da linjeskift har noget
vitalt at sige i ASP/VBScript, kan man ikke bare copy & paste koder fra
en nyhedsgruppe ind i en asp-fil. Man bliver nødt til at gætte sig til
hvor kodelinjerne er blevet brudte.

--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
Jeg søger et fuldtidsjob som programmør. Tag et kig på hjemmesiden.



Jens Gyldenkærne Cla~ (10-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-09-02 00:21

Esben Uth skrev:

> hmm så skriver den bare :

Det er ikke "bare" noget den skriver - det er faktisk en meget
præcis angivelse af hvad der er galt. Første linje siger:

> Strengkonstanten er uafsluttet


Din strengkonstant er variablen strSQL - og det at den er
uafsluttet betyder at der mangler et anførselstegn i slutningen af
linjen.

> /test/indsaet.asp, line 15, column 63

På næste linje fortæller den præcis på hvilken linje og ved hvilket
tegn fejlen er fundet (hvis du har en editor der kan vise disse
oplysninger når du redigerer en asp-fil er det en stor hjælp).

> strSQL = "INSERT INTO users (brugernavn, password, navn,
> email,
> --------------------------------------------------------------^

Herefter får du et print af den linjen der er skyld i problemet -
oven i købet med en markering af hvor i linjen problemet opstår.

> Ved du hvad der R galt ?

Ja - du har fået delt opbygningen af strSQL over to linjer. Det kan
asp ikke håndtere. Jakob Møbjerg Nielsen har i sit svar givet
forklaringen på hvorfor linjerne bliver ombrudt her på usenet - det
er du bare nødt til at være opmærksom på hvis du kopierer kode fra
et indlæg.

> mener du at jeg skal lave sådan at man ikke kan skrive det
> samme 2 gange?

Nej. Jeg mener at du skal sikre at et indtastet enkelt
anførselstegn (') bliver erstattet med to styks. På den måde bliver
anførselstegnet læst og lagt ind i dit felt. Hvis du ikke gør det
vil sqlkaldet normalt fejle - og hvis du er rigtig uheldig kan en
ondsindet bruger få din database til at gøre ting du absolut ikke
har interesse i.

Et par eksempler:

For ikke at bruge for meget plads nøjes jeg med at indsætte data i
ét felt.

Din kode er:
strSQL = "INSERT INTO users (brugernavn) VALUES ('" & _
   Request.Form("Brugernavn") & "')"

Jeg indtaster nu "Mc'Donald" i feltet brugernavn. Med ovenstående
kode bliver ser den færdige strSQL sådan ud:

INSERT INTO users (brugernavn) VALUES ('Mc'Donalds')

Parantesen indeholder tre enkelte anførselstegn. De første to
omkranser værdien 'Mc', mens det sidste står og flagrer alene.
Access kan ikke afgøre hvad der skal gøres i den situation og vil
derfor returnere en fejlmeddelelse.

Endnu værre bliver det når min mindre venlige fætter dukker op. Han
kan se at du registrerer nogle brugerdata, og gætter på at du har
en tabel kaldet users. Nu skriver han følgende i feltet brugernavn:

"b'); DELETE FROM users; SELECT * FROM users WHERE ('a' = 'a"

Den færdige strSQL bliver herefter:

INSERT INTO users (brugernavn) VALUES ('b'); DELETE FROM users;
SELECT * FROM users WHERE ('a' = 'a')"

Semikolon angiver en ny ordre til databasen, så ovenstående er i
virkeligheden tre forskellige kommandoer til databasen:

INSERT INTO users (brugernavn) VALUES ('b');

- der er en forholdsvis uskyldig indsættelsesforespørgsel

DELETE FROM users;

- her slettes alle poster i din brugertabel pludselig

SELECT * FROM users WHERE ('a' = 'a')"

- og til sidst en uskadelig udvælgelsesforespørgsel.


Det kræver en god portion held hvis en ondsindet bruger skal få
"succes" med sådan et stunt - men omvendt er det meget nemt at
sikre sig mod at det overhovedet kan lade sig gøre. Og selv om man
aldrig skulle støde på et ondsindet angreb er det bestemt ikke
usandsynligt at der en dag er en bruger der finder på at bruge
enkelt anførselstegn i et felt.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Esben Uth (10-09-2002)
Kommentar
Fra : Esben Uth


Dato : 10-09-02 06:49

Jens Gyldenkærne Clausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Esben Uth skrev:
>
> > hmm så skriver den bare :
>
> Det er ikke "bare" noget den skriver - det er faktisk en meget
> præcis angivelse af hvad der er galt. Første linje siger:
>
> > Strengkonstanten er uafsluttet
>
>
> Din strengkonstant er variablen strSQL - og det at den er
> uafsluttet betyder at der mangler et anførselstegn i slutningen af
> linjen.
>
> > /test/indsaet.asp, line 15, column 63
>
> På næste linje fortæller den præcis på hvilken linje og ved hvilket
> tegn fejlen er fundet (hvis du har en editor der kan vise disse
> oplysninger når du redigerer en asp-fil er det en stor hjælp).
>
> > strSQL = "INSERT INTO users (brugernavn, password, navn,
> > email,
> > --------------------------------------------------------------^
>
> Herefter får du et print af den linjen der er skyld i problemet -
> oven i købet med en markering af hvor i linjen problemet opstår.
>
> > Ved du hvad der R galt ?
>
> Ja - du har fået delt opbygningen af strSQL over to linjer. Det kan
> asp ikke håndtere. Jakob Møbjerg Nielsen har i sit svar givet
> forklaringen på hvorfor linjerne bliver ombrudt her på usenet - det
> er du bare nødt til at være opmærksom på hvis du kopierer kode fra
> et indlæg.
>
> > mener du at jeg skal lave sådan at man ikke kan skrive det
> > samme 2 gange?
>
> Nej. Jeg mener at du skal sikre at et indtastet enkelt
> anførselstegn (') bliver erstattet med to styks. På den måde bliver
> anførselstegnet læst og lagt ind i dit felt. Hvis du ikke gør det
> vil sqlkaldet normalt fejle - og hvis du er rigtig uheldig kan en
> ondsindet bruger få din database til at gøre ting du absolut ikke
> har interesse i.
>
> Et par eksempler:
>
> For ikke at bruge for meget plads nøjes jeg med at indsætte data i
> ét felt.
>
> Din kode er:
> strSQL = "INSERT INTO users (brugernavn) VALUES ('" & _
>    Request.Form("Brugernavn") & "')"
>
> Jeg indtaster nu "Mc'Donald" i feltet brugernavn. Med ovenstående
> kode bliver ser den færdige strSQL sådan ud:
>
> INSERT INTO users (brugernavn) VALUES ('Mc'Donalds')
>
> Parantesen indeholder tre enkelte anførselstegn. De første to
> omkranser værdien 'Mc', mens det sidste står og flagrer alene.
> Access kan ikke afgøre hvad der skal gøres i den situation og vil
> derfor returnere en fejlmeddelelse.
>
> Endnu værre bliver det når min mindre venlige fætter dukker op. Han
> kan se at du registrerer nogle brugerdata, og gætter på at du har
> en tabel kaldet users. Nu skriver han følgende i feltet brugernavn:
>
> "b'); DELETE FROM users; SELECT * FROM users WHERE ('a' = 'a"
>
> Den færdige strSQL bliver herefter:
>
> INSERT INTO users (brugernavn) VALUES ('b'); DELETE FROM users;
> SELECT * FROM users WHERE ('a' = 'a')"
>
> Semikolon angiver en ny ordre til databasen, så ovenstående er i
> virkeligheden tre forskellige kommandoer til databasen:
>
> INSERT INTO users (brugernavn) VALUES ('b');
>
> - der er en forholdsvis uskyldig indsættelsesforespørgsel
>
> DELETE FROM users;
>
> - her slettes alle poster i din brugertabel pludselig
>
> SELECT * FROM users WHERE ('a' = 'a')"
>
> - og til sidst en uskadelig udvælgelsesforespørgsel.
>
>
> Det kræver en god portion held hvis en ondsindet bruger skal få
> "succes" med sådan et stunt - men omvendt er det meget nemt at
> sikre sig mod at det overhovedet kan lade sig gøre. Og selv om man
> aldrig skulle støde på et ondsindet angreb er det bestemt ikke
> usandsynligt at der en dag er en bruger der finder på at bruge
> enkelt anførselstegn i et felt.
>
> --
> Jens Gyldenkærne Clausen
> MF (medlem af FIDUSO - www.fiduso.dk)
> I ovenstående tekst benyttes nyt komma.


--
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

Esben Uth (10-09-2002)
Kommentar
Fra : Esben Uth


Dato : 10-09-02 11:43

hmm undskyld med det sidste indslag ved ikk hvad den har gjort....
men der jeg skal ha hjælp til R :
jeg har lavet alle problemerne men nu skriver browseren :
>Fejltype:
>Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
>Der er en syntaksfejl
>/test/indsaet.asp, line 19, column 7
>values(
har prøvet at afslutte den med noget for på et tidspunkt stod der at den
skulle afsluttes så jeg skrev values ("' men det virkede heller ikk og nu
skriver den så at der R en syntaksfejl ? aner ikk hvad det R plz
hjæælp....


- EzzeR

--
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~ (10-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-09-02 22:14

Esben Uth skrev:

> jeg har lavet alle problemerne

Undskyld - men hvad mener du med det?
> men nu skriver browseren :

>>Der er en syntaksfejl
>>/test/indsaet.asp, line 19, column 7
>>values(

Består linje 19 alene af "values("? I så fald er det en klar fejl.

Hvad forventer du at linjen "Values(" skal gøre? Hvis du sætter den
sammen med andre linjer (med & _) skal den sammensatte linje give
mening i sig selv.

Ellers så prøv at følge Jakobs råd:
Læs <http://www.html.dk/tutorials/asp/>. Hvis du har læst den, så
prøv én gang til.

> har prøvet at afslutte den med noget for på et tidspunkt stod
> der at den skulle afsluttes så jeg skrev values ("'

Sætter du Option Explicit (OE) øverst i dine asp-filer? Hvis ikke
kan det varmt anbefales. Uden OE kan enhver tekststreng opfattes
som en variabel - så asp tror måske at values er en procedure,
funktion eller variabel. Med OE slået til får du besked hver gang
du forsøger at benytte en variabel uden først at erklære den (med
Dim).

Får du stadig fejl, så giv os hele den linje fejlen opstår i - og
gerne en eller to linjer før. Prøv engang selv at kigge på
fejlmeddelelsen og derefter på din kode. Husk at ASP læser én linje
ad gangen, så alle linjer skal give mening.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

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

Månedens bedste
Årets bedste
Sidste års bedste