/ 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
Erstat ' så der kan indsættes med sql
Fra : Thomas


Dato : 17-03-03 14:32

Jeg skal indsætte en masse data i min database hvoraf der er navne som
indeholder '. Jeg fandt nedenstående på nettet, men problemet er at den ikke
spiser mine variabler, men i stedet ser ud til at sende en string afsted???.
Hvis jeg fjerner "lastname" og i stedet skriver min variabel lastname får
jeg en fejl besked som hedder Invalid use of Null: 'Replace' :

When an apostrophe ( ' ) is inserted into an insert string errors will
occur. The following will cause errors:

<%
LastName = "O'Neal"
Conn.Execute "INSERT (LastName) VALUES ('" & LastName & "')"
%>


The following function will solve this problem:

<%
FUNCTION theFIX( theVariable )
theFIX=Replace(theVariable, "'", "''")
' this replaces a single apostrophe ( ' ) with two single apostrophes ( '').
Note: two single apostrophes, not one quotation mark
END FUNCTION
%>


Now use the function in the string:

<%
Conn.Execute "INSERT (LastName) VALUES ('" & theFIX(Request("LastName")) &
"')"
%>




 
 
Jens Gyldenkærne Cla~ (17-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-03-03 14:46

Thomas skrev:

> Jeg skal indsætte en masse data i min database hvoraf der er
> navne som indeholder '. Jeg fandt nedenstående på nettet, men
> problemet er at den ikke spiser mine variabler, men i stedet
> ser ud til at sende en string afsted???. Hvis jeg fjerner
> "lastname" og i stedet skriver min variabel lastname får jeg
> en fejl besked som hedder Invalid use of Null: 'Replace' :

Der er to ting der kan være galt. Først og fremmest tager den
funktion du har fundet ikke højde for at input kan være null. Det
bør den gøre. Hvis du vil have null-værdier til at stå som null-
værdier i databasen skal du lave indkapslingen med anførselstegn i
din funktion. Det kan fx se sådan ud:

Function escapeText( mytext )
   If IsNull( mytext ) Then
       escapeText = "null"
   Else
       escapeText = "'" & Replace(mytext, "'", "''") & "'"
   End If
End Function

Det kan du så bruge i en forespørgsel:

SQL = "INSERT INTO navne (Lastname) VALUES (" &
escapeText(Lastname) & ")"


> Conn.Execute "INSERT (LastName) VALUES ('" & LastName & "')"

Udover at man risikerer fejl med anførselstegn er ovenstående også
forkert sql-syntaks. Der er ikke specificeret nogen tabel som mål.


Hvis du ved at dit navnefelt ikke er tomt er der nok også noget
galt med den måde du håndterer variablen på. Hvor og hvordan
tildeler du en værdi til Lastname? Bruger du Option Explicit (se
<http://asp-faq.dk/article/?id=9>)
--
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

Thomas (17-03-2003)
Kommentar
Fra : Thomas


Dato : 17-03-03 21:21

Tak skal du have ...nu virker det!!.
Dog skal:
> escapeText = "'" & Replace(mytext, "'", "''") & "'"
blot være:
escapeText = Replace(mytext, "'", "''")

Mvh. Thomas

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns9341964AD2F75jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Thomas skrev:
>
> > Jeg skal indsætte en masse data i min database hvoraf der er
> > navne som indeholder '. Jeg fandt nedenstående på nettet, men
> > problemet er at den ikke spiser mine variabler, men i stedet
> > ser ud til at sende en string afsted???. Hvis jeg fjerner
> > "lastname" og i stedet skriver min variabel lastname får jeg
> > en fejl besked som hedder Invalid use of Null: 'Replace' :
>
> Der er to ting der kan være galt. Først og fremmest tager den
> funktion du har fundet ikke højde for at input kan være null. Det
> bør den gøre. Hvis du vil have null-værdier til at stå som null-
> værdier i databasen skal du lave indkapslingen med anførselstegn i
> din funktion. Det kan fx se sådan ud:
>
> Function escapeText( mytext )
> If IsNull( mytext ) Then
> escapeText = "null"
> Else
> escapeText = "'" & Replace(mytext, "'", "''") & "'"
> End If
> End Function
>
> Det kan du så bruge i en forespørgsel:
>
> SQL = "INSERT INTO navne (Lastname) VALUES (" &
> escapeText(Lastname) & ")"
>
>
> > Conn.Execute "INSERT (LastName) VALUES ('" & LastName & "')"
>
> Udover at man risikerer fejl med anførselstegn er ovenstående også
> forkert sql-syntaks. Der er ikke specificeret nogen tabel som mål.
>
>
> Hvis du ved at dit navnefelt ikke er tomt er der nok også noget
> galt med den måde du håndterer variablen på. Hvor og hvordan
> tildeler du en værdi til Lastname? Bruger du Option Explicit (se
> <http://asp-faq.dk/article/?id=9>)
> --
> 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



Jens Gyldenkærne Cla~ (17-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-03-03 22:25

Thomas skrev:

> Tak skal du have ...nu virker det!!.

Fint.

> Dog skal:
>> escapeText = "'" & Replace(mytext, "'", "''") & "'"
> blot være:
> escapeText = Replace(mytext, "'", "''")

Ikke hvis du skal have muligheden for at lægge null-værdier i din
database. Men det kræver naturligvis at funktionen bruges sådan som
jeg beskrev det - dvs. at der _ikke_ sættes anførselstegn om den
værdi funktionen returnerer.

NB: Læs venligst min signatur - det er lettere at følge med i
tråden hvis du svarer nedenunder det du citerer.
--
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

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

Månedens bedste
Årets bedste
Sidste års bedste