Avatar billede laksen Nybegynder
29. februar 2004 - 18:04 Der er 12 kommentarer og
2 løsninger

Apostrof i variabel til database

Jeg har følgende:

<%
felt1 = "værdi uden apostrof i"
felt2 = "værdi, der indeholder en apostrof ' <- nemlig her"

strSQL = "INSERT INTO tabel (felt1, felt2) VALUES ('" & felt1 & "', '" & felt2 & "')"
Set rs = db.Execute(strSQL)
%>

Den melder fejl pga. apostroffen i variablen "felt2". Hvordan kan jeg få den til at acceptere "felt2" og samtidig gemme værdien med aposrof i databasen?
Avatar billede fennec Nybegynder
29. februar 2004 - 18:07 #1
indsæt to apostroffer....

replace(felt2,"'","''")
Avatar billede laksen Nybegynder
29. februar 2004 - 18:09 #2
Men så gemmes felt2 vel også med 2 apostroffer i stedet for kun 1?
Avatar billede fennec Nybegynder
29. februar 2004 - 18:16 #3
nej. din database skifter det selv ud. Lige som ASP gør med anførselstegn ".

Du vil derfor også løbe i problemer hvis din tekst indeholder anførselstegn, men så er det ASP'en der fejler. Lav derfor altid to replace på brugerinput der er tekst.

replace(replace(BrugerInput,"'","''"),"""","""""")
Avatar billede laksen Nybegynder
29. februar 2004 - 18:16 #4
Så skulle problemet være helt afhjulpet??
Avatar billede The Real Yoda Juniormester
29. februar 2004 - 18:20 #5
det bedste ville nok være at lave
replace(replace(felt2,"'","&#39;"),chr(34),"&quot;")

derved vil apostroffen og anførelsestegn, stadig blive skrevet korrekt ud
Avatar billede fennec Nybegynder
29. februar 2004 - 18:29 #6
>>therealyoda
Det er rigtigt, jeg synes bare det er nemmere at forstå, end de koder du bruger.

>>laksen
ja, det skulle det være. Lige en bemærkning. I den yderst replace er der 4 og 6 anførselstegn. Det er fordi ASP (i første tilfælde) tolker de to midterste som en, og i sidste som 2. Altså bliver et anførselstegn udskiftet med to.
Avatar billede The Real Yoda Juniormester
29. februar 2004 - 18:32 #7
hehe.. det er jo så en smags-sag.. jeg synes det er noget rod med alle de der tegn.. jeg mener.. du er jo også nødt til at lige forklare at der er 4 og 6 " .. ..
Avatar billede squashguy Nybegynder
29. februar 2004 - 18:33 #8
Den med at erstatte et anførselstegn med to stks synes jeg ikke lige giver mening. Hvis brugeren indtaster noget tekst med anførselstegn, vil dette ikke få nogen som helst indflydelse på ASP-koden.

replace(felt2,"'","''")

må være det korrekte svar her. Da apostroffer herved kan indsættes i databasen.
Avatar billede The Real Yoda Juniormester
29. februar 2004 - 18:37 #9
ja, men igen .. hvis man så skal bruge teksten fra databasen i noget javascript.. så fucker det med mindre man igen replacer.. såe..
Avatar billede fennec Nybegynder
29. februar 2004 - 18:40 #10
>>therealyoda
det er en smagssag, og vi bliver nok aldrig enig :-)

>>squashguy
Hvis brugeren har brugt et " vil SQL sætningen blive:
strSQL = "INSERT INTO tabel (felt1, felt2) VALUES ('test uden anførselstegn', 'test med anførselstegn ". der var den lige')"

og den linje fejler.....
Avatar billede squashguy Nybegynder
29. februar 2004 - 18:44 #11
fennec.. har du afprøvet?

Fejlen vil kun opstå, hvis du manuelt indtaster anførselstegn i koden. Hvis strengen allerede indeholder anførselstegn vil problemet ikke opstå.
Avatar billede fennec Nybegynder
29. februar 2004 - 18:58 #12
jeg har den som standart, da jeg har oplevet fejl. Det er dog ved at være længe siden jeg begyndte på det, men jeg vil da lige undersøge om du har ret...
Avatar billede laksen Nybegynder
26. marts 2004 - 11:44 #13
fennec: opretter du ikke også et svar? Så deler jeg pointene mellem dig og therealyoda.....
Avatar billede fennec Nybegynder
26. marts 2004 - 11:45 #14
ok
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