webForumDet fria alternativet

Enkelcitat som ställer till det i frågor

Databaser & SQL

9 svar · 328 visningar · startad av MoonCow

Medlem sedan juni 2001223 inlägg
Frågan#1

Hejsan! Med sådanhär kod:

strSQLgb = "INSERT Into gb (motagare,mess,nowen,last,usrbild,fran) VALUES('" & till & "','" & Request.Form("mess") & "','#" & now & "#','nej','" & Anvbild & "','" & Session("namn") & "')"

så lägger jag till information i min databas vilken är en mySQL,
detta funkar ganska bra tills man kommer till att det meddelandet som skrivs till databasen inehåller ett ', ett enkelcitattecken (om det är så det kallas). Då bryts ju frågan och man får ett felmeddelande. Vilket är bästa lösningen på detta? Att använda en Replace för att trolla bort enkelcitattecknena? fast det vill man ju helst inte...

mvh, Max

Medlem sedan feb. 200112 078 inlägg
#2

Använder du ASP? Jag vet inte hur det fungerar i PHP, men såhär gör vi ASP-are iallafall:

INSERT INTO table SET kolumn = '" & replace(request.form("falt"),"'","''") & "'"

Alltså ersätter en ' med två. Då blir det rätt.

Eller så är jag ute och vimsar. ;)

Medlem sedan mars 20025 907 inlägg
#3

OveRRidE skrev:

Eller så är jag ute och vimsar. ;)

Nopp, jag tror på din lösning! :)

Medlem sedan juni 2001223 inlägg
#4

Man tackar...
det funkade förträffligt :)
gott nytt år!

Medlem sedan feb. 20012 412 inlägg
#5

För att slippa skriva en replace på alla variabler i sql-frågorna är det lättare att göra en funktion som fixar saken:

function replaceBadChar(sfix)
sfix = Replace(Trim(sfix), "'", "''")
replaceBadChar = sfix
end function
Medlem sedan juni 20001 257 inlägg
#6

Bättre är väl att använda lagrade procedurer. Som ni gör så ändrar ni ju innehållet.

Medlem sedan feb. 200112 078 inlägg
#7

kristoffer skrev:

Bättre är väl att använda lagrade procedurer. Som ni gör så ändrar ni ju innehållet.

Inte alls. Ersätt en ' med två ' så kan jag garantera att det bli en ' i den färdiga strängen, vilket även är exakt samma som originalet.

Om nu inte någon annan formatering äger rum någon annanstans.

Medlem sedan jan. 20012 204 inlägg
#8

Finns ju andra fördelar med lagrade procedurer... snabbhet!

Medlem sedan dec. 200012 464 inlägg
#9

Mysql har inte stöd för lagrade procedurer.

Medlem sedan juni 2001223 inlägg
#10

Jörgen HP skrev:

För att slippa skriva en replace på alla variabler i sql-frågorna är det lättare att göra en funktion som fixar saken:

function replaceBadChar(sfix)
sfix = Replace(Trim(sfix), "'", "''")
replaceBadChar = sfix
end function

Jepp, tack :). Var även så jag gjorde själv...

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