Trodde jag hade fått till det där med replace ' men nu sliter jag snart mitt hår igen =(
Jag tycker det verkar som att replace funktionen bara jobbar just när man anropar den, att den liksom inte tar bort nåt permanent men jag antar att det är fel.
Men betrakta detta:
Lite if kod......
innamnen = Replace(Request.Form("innamn"),"'","''")
osv med fler fält......
sql = "select * FROM Innehavare where Anvnamn = '" & inanvnamn & "' and Losen ='" & inlosen & "'"
set rs = databas.Execute(sql)
Här tror då jag att jag ersatt alla fnuttar med ett blanksteg innan det matades in i databasen... men nej sån tur har jag inte. När jag längre ned på sidan skriver:
if Request.Form("anvnamn") <> "" and Request.Form("losen") <> "" then
strLosen = Request.Form("losen")
stranv = Request.Form("anvnamn")
sql = "select * FROM Innehavare where Anvnamn = '" & stranv & "' and Losen ='" & StrLosen & "'"
set rs = databas.Execute(sql)
Och sen vill skriva ut namnet på kontaktpersonen så här:
<%=rs("Kontaktperson")%>
då skrivs namnet ut MED fnutt i! Jag som trodde att jag hade tagit bort det! Det är nämligen innamnen som jag tar replace på längst upp som är kontaktpersonen...
Replacear du en apostrof med två så är det korrekt. Det är nämligen så du skall göra för att tillåta apostrofer i fältvärden i SQL. Det är då bara en apostrof som sparas i databasen, därför måste du göra denna replace alltid när du använder UPDATE eller INSERT.
All annan ersättning du gör innan insert/update sparas i databasen.
Ursprungligen av @nders **Replacear du en apostrof med två så är det korrekt. Det är nämligen så du skall göra för att tillåta apostrofer i fältvärden i SQL. Det är då bara en apostrof som sparas i databasen, därför måste du göra denna replace alltid när du använder UPDATE eller INSERT.
All annan ersättning du gör innan insert/update sparas i databasen.
Mvh,**
All annan ersättning (läs undantaget ' och i vissa fall ? ) bör göras vid presentationen, eller?
Det blir mer överskådligt att göra så, och det är lätt att tappa bort sig bland parenteser och citationstecken om man lägger in allting direkt i SQL-frågan.
Det tillhör god sed att använda variabler, speciellt om värdena ska användas mer än en gång på sidan.
Nej, man ersätter alltså en apostrof med två för att kunna använda det tecknet och inte få felmeddelanden när man exekverar SQL-frågan.
Andra språk / teknologier använder andra escape-tecken. Exempelvis, om du i VBScript (asp) vill skriva ut ett citationstecken, så är det två citationstecken som skall vara i strängen:
Response.write "<img src=""bilden.gif"">"
I Javascript, PHP och många andra riktiga programmeringsspråk används backslash som escapetecken.
Lite kuriosa, bara. :)
Mvh,
138 ms totalt · 3 externa anrop · v20260731065814-full.b746b907