webForumDet fria alternativet

| tas bort när jag sparar en text i en databas

Databaser & SQL

12 svar · 299 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Vad ska jag göra. Den tas ju bort i en funktion för att förhindra sql-injection men kan man lösa det på något sätt?

Medlem sedan dec. 200012 464 inlägg
#2

| är bara ett problem om du använder en accessdatabas.

Ett sätt är attt ersätta det med chr(124)

dvs om du har

sql = "insert into x values('|')"

så skall det översättas till

sql = "insert into x values('' & chr(124) & '')"
Medlem sedan jan. 20013 406 inlägg
#3

Men kan man lägga in det där i funktionen fixaTecken?

Medlem sedan mars 20025 907 inlägg
#4
fixaTecken = replace(fixaTecken, "|", chr(124))

borde det väl bli.

Medlem sedan dec. 200012 464 inlägg
#5

Njae

fixaTecken = replace(fixaTecken, "|", "' & chr(124) & '")
Medlem sedan jan. 20013 406 inlägg
#6

Det där fungerar ju sedan även med SQL-server eller hur?

Medlem sedan dec. 200012 464 inlägg
#7

Nej.

Medlem sedan jan. 20013 406 inlägg
#8

Alltså spelar det någon roll om jag kör den funktionen innan jag kör in det i databasen? vad är det som blir fel?

Medlem sedan dec. 200012 464 inlägg
#9

Ja, om du använder Access så kan det bli fel. Jag har publicerat en länk till en artikel som förklarar varför. Kanske ett drygt år tillbaka.

Medlem sedan jan. 20013 406 inlägg
#10

LarsG skrev:

Ja, om du använder Access så kan det bli fel. Jag har publicerat en länk till en artikel som förklarar varför. Kanske ett drygt år tillbaka.

Jag menade vad är det som blir fel om man kör funktionen

fixaTecken = replace(fixaTecken, "|", "' & chr(124) & '")

när man gör en insert i en sql-databas?

Medlem sedan jan. 20013 406 inlägg
#11

Just nu så gör jag så här för att ta bort tecknet '

sfix = Replace(Trim(sfix), "'", "''")

Kan man göra så här istället?

sfix = Replace(Trim(sfix), "'", "' & chr(39) & '")
Medlem sedan jan. 20013 406 inlägg
#12

LarsG skrev:

Nej.

Hur gör man i MS SQL Server?

Medlem sedan dec. 19996 721 inlägg
#13
fixaTecken = replace(fixaTecken, "|", "' + char(124) + '")

[tjat, med substans]
Eller, ännu hellre, parametriserade frågor :)
[/tjat, med substans]

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)