M MoonCow Medlem sedan juni 2001 223 inlägg Frågan 29 dec. 2002 19:12 #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
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg 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. ;)
Peeer Medlem sedan mars 2002 5 907 inlägg
OveRRidE skrev:
Eller så är jag ute och vimsar. ;)
Nopp, jag tror på din lösning! :)
M MoonCow Medlem sedan juni 2001 223 inlägg Man tackar...
det funkade förträffligt :)
gott nytt år!
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
Bättre är väl att använda lagrade procedurer. Som ni gör så ändrar ni ju innehållet.
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg
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.
P P Medlem sedan jan. 2001 2 204 inlägg Finns ju andra fördelar med lagrade procedurer... snabbhet!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Mysql har inte stöd för lagrade procedurer.
M MoonCow Medlem sedan juni 2001 223 inlägg
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...