webForumDet fria alternativet

Är replace funktionen inte permanent?

ASPur ASP

8 svar · 351 visningar · startad av leniz

lenizMedlem sedan aug. 2001676 inlägg
#1

Hej igen!

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)

if rs.eof then

sql = "INSERT INTO Innehavare(Privatperson, Foretag, Kontaktperson, Adress, Postnr, Ort, Telefonnr, Epost, Hemsida, Anvnamn, Losen)" & _
" VALUES (" & _
privaten & "," & _
foretagen & ",'" & _
innamnen & "','" & _
inadressen & "','" & _
inpostnren & "','" & _
inorten & "','" & _
intelen & "','" & _
ineposten & "','" & _
inhemsidaen & "','" & _
inanvnamn & "','" & _
inlosen & "')"

databas.Execute(sql)
end if

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

@ndersMedlem sedan juni 200032 969 inlägg
#2

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,

LAMPMedlem sedan mars 2002777 inlägg
#3

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?

@ndersMedlem sedan juni 200032 969 inlägg
#4

All annan ersättning (läs undantaget ' och i vissa fall ? ) bör göras vid presentationen, eller?
Det anser jag.

Möjligtvis även % att replace:a på något sätt innan, eftersom det används som wild card vid sökningar med LIKE.

Mvh,

mozillaMedlem sedan juli 20011 084 inlägg
#5

Måste bara få fråga en liten utstickare... Är det bättre att man skriver in allt i variabler som man sedan sparar(som leniz gjort) dvs.

Dim strText
strText = Request.Form("text")

Och sedan lägga in strText i databasen? Eller kan man lika gärna lägga in Request satsen med en gång? Om ja, varför är det bättre?

@ndersMedlem sedan juni 200032 969 inlägg
#6

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.

Mvh,

LAMPMedlem sedan mars 2002777 inlägg
#7

Ursprungligen av @nders **All annan ersättning (läs undantaget ' och i vissa fall ? ) bör göras vid presentationen, eller?
Det anser jag.

Möjligtvis även % att replace:a på något sätt innan, eftersom det används som wild card vid sökningar med LIKE.

Mvh,**

Okey, jag fattade ditt inlägg fel :)

lenizMedlem sedan aug. 2001676 inlägg
#8

Aha!

Aha nu är jag med =) Jag trodde att det skulle ta bort den och spara t.ex. leni'z som leniz om du förstår vad jag menar!

@ndersMedlem sedan juni 200032 969 inlägg
#9

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,

131 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)