G8Medlem sedan jan. 20011 213 inlägg 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
EkströmMedlem sedan feb. 20022 594 inlägg 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.
G8Medlem sedan jan. 20011 213 inlägg 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
LarsGMedlem sedan dec. 200012 464 inlägg Hur ser det färdiga sql-statementet ut?
G8Medlem sedan jan. 20011 213 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg Hur ser den färdiga SQL-frågan ut? Skriv ut den med response.write istället för att exekvera den.
Mvh,
G8Medlem sedan jan. 20011 213 inlägg 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
G8Medlem sedan jan. 20011 213 inlägg 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
LarsGMedlem sedan dec. 200012 464 inlägg 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.
G8Medlem sedan jan. 20011 213 inlägg 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