Avatar billede kroger Nybegynder
26. januar 2003 - 22:38 Der er 23 kommentarer og
2 løsninger

" og sql

Er det muligt at kunne bruge " tegnet i tekst med sql?

Ligesom man kan bruge:

dato = Request.Form("dato")
dato = Replace(dato, "'", "''")

For at kunne benytte ' tegnet...
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 22:41 #1
Nej.

Du skal escape ' med ''.

Så hvis du vil hælde ' i et tekstfelt, skriver du

INSERT INTO mintabel VALUES ('''');

og teksten "Lad os kalde ham 'Flemse'" bliver til

INSERT INTO mintabel VALUES ('Lad os kalde ham ''flemse''');
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 22:41 #2
Bemærk venligst de dobbelse enkelt-gåseøjne ('').
Avatar billede kroger Nybegynder
26. januar 2003 - 22:44 #3
Jeg tror ikke jeg helt forstår den, det gåseøjne jeg gerne vil have mulighed for at kunne, så f.ex. lad os kalde ham "flemse" ville kunne bruges.....
Avatar billede kroger Nybegynder
26. januar 2003 - 22:45 #4
' tegnet har jeg ikke problemer med
Avatar billede devia Nybegynder
26. januar 2003 - 22:52 #5
hmm.. hvis ' bruges til SQL strenge, kan " vel bruges som almindelig ASCII tegn i denne streng? (f.eks. 'Lad os kalde ham "flemse"' ) Dette mener jeg bestemt virker for mig.
Oh well.. nu skal jeg ikke gøre mig klog på noget jeg næsten intet ved om, men blot konstatere at jeg er henrykt over at få at vide at ' kan escapes med ' så '' bliver til ' ;-)
Avatar billede Slettet bruger
26. januar 2003 - 22:55 #6
Du burde uden problemer (og andet hokuspokus) kunne bruge tegnet: "

... i SQL.
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 22:58 #7
Som devia foreslår - " kan uden videre bruges.

Lad os kalde ham "Flemse" bliver blot til 'Lad os klade ham "Flemse"'.

Jeg var sikker på at du spurgte til enkelt-gåseøjne fordi at svaret på dobbelt-gåseøjne er rimeligt indlysende ;-)
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 22:59 #8
...og du behøver iøvrigt ikke at indføre en stavefejl som jeg gjorde i eksemplet for at få det til at virke.
Avatar billede devia Nybegynder
26. januar 2003 - 23:02 #9
- hvilket jo er vigtigt at pointere, idet _darkstar_ normalt selv hader folk, der laver stavefejl ;-)
Avatar billede Slettet bruger
26. januar 2003 - 23:05 #10
hehe
Avatar billede kroger Nybegynder
26. januar 2003 - 23:14 #11
Når jeg bruger gåseøjne forsvinder alt efter det første gåseøjne. Og det må vel være vbscript koden der laver ballade idet...
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 23:34 #12
Det har du nok ret i. Det burde ikke være et problem ift. databasen.

Hvis du vil videre med det problem her på Eksperten, foreslår jeg at du skriver et indlæg hvor du viser den del af koden, som sender forespørgslen.
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 23:37 #13
devia + smajli>>> Jaja. Træd bare rundt i det :-]

Jeg skrev ikke noget om at jeg selv stavede perfekt. Med alle de mange spørgsmål som jeg gerne vil blande mig i, er der alt for lidt tid. Så der sniger sig en slåfejl ind hist og hÆr.
Avatar billede kroger Nybegynder
26. januar 2003 - 23:37 #14
Ok, her kommer den:

artikel = Request.Form("artikel")
artikel = Replace(artikel, "'", "''")

pstCreate = "Insert into nyheder"
pstCreate = pstCreate & " ( kategori, "
pstCreate = pstCreate & "artikel) "

pstCreate = pstCreate & "values( "

pstCreate = pstCreate & "'" & kategori & "', "
pstCreate = pstCreate & "'" & Request.Form("artikel") & "'); "
Avatar billede kroger Nybegynder
26. januar 2003 - 23:38 #15
hov, i den sidste linje skal Request.Form("artikel") sæføli udskiftes med artikel
Avatar billede _darkstar_ Nybegynder
26. januar 2003 - 23:57 #16
Det burde bare køre.

Prøv at putte en

Response.Write(pstCreate)

ind umiddelbart før at du kalder databasen.

Put resultatet i et indlæg her (med mindre du selv finder fejlen).
Avatar billede kroger Nybegynder
27. januar 2003 - 00:03 #17
Insert into nyheder ( kategori, dato, overskrift, krop, link, linknavn, billede, artikel) values( 'transport', '23.01,.01', 'Detter er ', 'Tekstfelt', 'www', 'wwwvis', 'billede', '');

Og detter er, var et tekstfelt hvor jeg havde skrevet: detter er "næsten" en test
Avatar billede _darkstar_ Nybegynder
27. januar 2003 - 00:09 #18
Jeps. Det tyder på at der er gået noget galt i koden. Jeg kommer nok til at stå af på løsningen af det problem.

Prøv at lave et kort eksempel hvor du modtager en streng fra Requst.Form og skriver den ud. Får du dobbelt-gåseøjnene med der?

Hvis "ja" så er du på sporet - find ud af hvad forskellen på de to scripts og du har løsningen.

Hvis "nej" så luk dette spørgsmål. Tag det nye script og åbn et spørgsmål på Eksperten med det.
Avatar billede Slettet bruger
27. januar 2003 - 00:17 #19
Okay... i VBScript (som ikke er SQL) laves en streng såddan her:

s = "Dette er en streng"

hvis jeg skulle skrive: lad os kalde ham "flemse" skal jeg gøre såddan her:

s = "lad os kalde ham ""flemse"""

altså "" er en såkaldt escape sequence for ". Det vil sige, at du i VBScript skal lave: "" hver gang du skal bruge et: "

Det er derfor meget vigtigt at du skelner mellem, hvornår VbScript håndterer strengvariablen og hvårnår SQL gør det.

i VBSCript skal du være opmærksom på: "/""
i SQL skal du være opmærksom på: '/''
Avatar billede Slettet bruger
27. januar 2003 - 00:19 #20
Hvilken database benytter du i øvrigt?
Avatar billede _darkstar_ Nybegynder
27. januar 2003 - 00:26 #21
smajli>>> Det giver ikke meget mening at snakke om escaping af tegn, hvis han får alle data direkte fra Request.Form...
Avatar billede kroger Nybegynder
27. januar 2003 - 00:30 #22
Jeg bruger MSSQL. Jeg bruger bare dobbelt ' da der ser ens ud.
Jeg prøvede ellers at bruge:
overskrift = Request.Form("overskrift")
overskrift = Replace(overskrift, """, """")

Men til gengæld opdagede jeg en sjov ting. Min data bliver sendt gennem en "godkend" side, og da videregiver Requst.Form gåseøjne godt nok, men når dety bliver sendt videre igen via
<input type="hidden" name="overskrift" value="<%= request.form("overskrift") %>">
er det den laver det trick, og det er ligemeget om det er til siden der udføre database tingen eller til andre sider....
Avatar billede _darkstar_ Nybegynder
27. januar 2003 - 00:45 #23
Hehe. Du skal sørge for at erstatte " med &quot; før at du hælder data i din form.
Avatar billede kroger Nybegynder
27. januar 2003 - 00:55 #24
Ja, det kunne jeg jo have sagt mig selv, det er ikke hjernen der triller på højeste omdrejninger lige nu... Nå men tak for at i gad kigge på det.
Avatar billede Slettet bruger
27. januar 2003 - 01:15 #25
Enig med darkstar...
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