Du använder inte \ för att escapea tecken i ASP vad jag vet.
Exempel på escapeing:
" escapear du med ""
' escapear du med ''
osv.
Visa gärna SQL-satsen så man kan hjälpa dig.
9 svar · 338 visningar · startad av G8
Hej
Om jag skriver in \ ' (backslash och en fnutt utan mellanrum)i en textbox i ett formulär så får jag felmeddelande som antyder att jag har fel i SQLsträngen
Microsoft OLE DB Provider for ODBC Drivers fel '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax near 'age = '23', uppk' at line 1
Detta sker även om jag escape:ar '
Vad är det som orskarar detta och hur ska jag gå runt det? Jag antar att det är backslash som orsakar detta och ska jag då bara sätta en replace \ med \\ eller vad?
Kör MySQL databas...
Tack
//G8
Du använder inte \ för att escapea tecken i ASP vad jag vet.
Exempel på escapeing:
" escapear du med ""
' escapear du med ''
osv.
Visa gärna SQL-satsen så man kan hjälpa dig.
Jo jo, men jag kanske var lite otydlig...
Jag escape:ar ' redan och det funkar superbra... men skriver jag \ så får jag felmeddelandet som jag skrev innan...
Alltså måste väl även \ escape:as...eller?
Som sagts innan, MySQL...
//G8
Hur ser det färdiga sql-statementet ut?
Så här ser koden ut... och det är alltså när jag skriver in ett backslash som det blir fel, annars funkar det perfa...
connection ligger längre upp på sidan...
function fixa(fix)
fix = Replace(fix,"'", "''")
fix = Replace(fix,"|","")
fixa = fix
end function
nick = fixa(Request.Form("nick"))
Icq = fixa(Request.Form("icq"))
email = fixa(Request.Form("email"))
country = fixa(Request.Form("usercountry"))
info = fixa(Request.Form("info"))
city = fixa(Request.Form("city"))
homepage = fixa(Request.Form("homepage"))
age = fixa(Request.Form("age"))
showemail = fixa(Request.Form("showemail"))
uppkoppling = fixa(Request.Form("userconnection"))
Connection.Execute("UPDATE Users SET nick = '" & nick & "', icq = '" & icq & "', email = '" & email & "', country = '" & country & "', info = '" & info & "', city = '" & city & "', www = '" & homepage & "', age = '" & age & "', visaemail = '" & showemail & "', uppkoppling = '" & uppkoppling & "' WHERE ID = " & UID),,128
Connection.Close
//G8
Hur ser den färdiga SQL-frågan ut? Skriv ut den med response.write istället för att exekvera den.
Mvh,
Hmm, skriver jag ut SQLsatsen så funkar det så länge som jag inte skriver bara ett backslash. Fungerar inte heller om jag skriver vad som helst och sedan en radbrytning, och där skriver ett backslash...
Skriver jag dock ett mellanslag eller vad som helst och sedan ett backslash så fungerar det.
Mao. Varje rad jag påbörjar med ett backslash orsakar ovanstående felmess.. Nån som har en aning om vad det kan bero på?
Det är alltså fältet info jag har testat med, men det verkar gälla för alla fälten...
Connection.Execute("UPDATE Users SET nick = '" & nick & "', icq = '" & icq & "', email = '" & email & "', country = '" & country & "', info = '" & info & "', city = '" & city & "', www = '" & homepage & "', age = '" & age & "', visaemail = '" & showemail & "', uppkoppling = '" & uppkoppling & "' WHERE ID = " & UID),,128
Connection.Close
MYMESSAGE = Server.URLEncode("Your profile was updated!<br><br>Please wait...</font><p>") & nick& ", " & age & ", " & icq & ", " & email & ", " & country & ", " & info & ", " & City & ", " & homepage
Response.Redirect ("delay.asp?DELAY_TIME=3&DELAY_MESSAGE=" & MYMESSAGE & "&REDIRECT_URL=editprofile.asp")
//G8
du kan förresten kolla själv... la upp en sida med samma kod på min burk..
bottagen
(designen suger jag vet, men det är knappast sådet ska se ut sedan... ;)
//G8
Om du ändra fixa till detta då.
function fixa(fix)
fix = Replace(fix,"\","\\")
fix = Replace(fix,"'", "\'")
fixa = fix
end function
Mysql hittar alltid på en massa egna konstigheter.
Jag antar att du menar:
function fixa(fix)
fix = Replace(fix,"\","\\")
fix = Replace(fix,"'", "''")
fixa = fix
end function
Får felmeddelande annars...
Men, det verkar funka nu iaf.
Tack för hjälpen
//G8