fejl: ADODB.Connection.1 (0x80004005) SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE opgaveid = SET fornavn =' rasmus', efternavn =' windel
madeindk >> ja, det vil jeg også tro, men jeg vil undlade at antage noget og bare forholde mig til det kode jeg ser (jeg kan ikke vide hvad der er tænkt og gjort forud for denne stump kode)... :)
Nej, det er rigtigt softspot. Jeg giver dig rettet, jeg rettet det dog alligevel.
Hvad siger den nu? Mig og Softspot's er praktisk talt den samme bortset fra sidte linie hvor der står: strSQL = strSQL & "WHERE opgaveid = " & request.QueryString(id) i softspot's og i min står der: strSQL = strSQL & "WHERE opgaveid = " & request.QueryString("id") :-)
Hvis du skal fejlfinde på din kode, fordi den ikke virker, så prøv at udskrive din sql i stedet for bare at eksekvere den. Det gøres ved, at du før forbin.execute(strSQL) indsætter disse 2 linier:
response.write strSQL response.end
Dernæst synes jeg du skulle prøve at anvende en function til at lave replace på dine inputs, prøv følgende:
Function repl(txt) repl = Replace(txt, "'", "''") End Function
hvorefter du på dine inputs til databasen skriver f.eks.:
Hvorfor? Fordi det for det første gør din kode mere overskuelig og du glemmer ikke en parentes, en ' eller noget andet som kan være med til at din kode ikke virker.
Nu er det godt nok ikke mig der har oprettet spørgsmålet, tjaz. Men tak for tippet alligevel :-) Det KAN brugs. 1000 tak og jeg overførte også hans SQL i et asp dokument. Det kan ses her: http://arto.sykonia.dk/sqltest.asp hvis nogen skulle være interreseret.
Jeg ville heller anbefale at benytte Command-objektet i stedet, da man så slipper for de typiske problemer med SQL-injection (jeg har dog ikke erfaring med at benytte Command-objektet sammen med MySQL, så det må der være nogen som kan teste om fungerer eller måske endda ved det i forvejen :)).
Et Command-objekt kan laves således:
' Jeg tager lige den korte version, så kan man nok se mønsteret... sql = "UPDATE opgaver SET " & _ " fornavn = ? " & _ ", efternavn = ? " & _ ", adresse = ? " & _ "WHERE opgaveid = ?" set cmd = Server.CreateObject("ADODB.Command")
' sæt command-obj. forbindelse til den åbne db-forbindelse set cmd.ActiveConnection = forbin
cmd.CommandType = adCmdText cmd.CommandText = sql
' Tilføj parametre i den rækkefølge som det er angivet i SQL-sætnignen cmd(0) = Request("fornavn") cmd(1) = Request("efternavn") cmd(2) = Request("adresse") cmd(3) = Request.QueryString("id") call cmd.Execute(sql)
adCmdText er en konstant som defineres i ADO-dll'en og hvis man skal bruge den i sine ASP-sider kan man smide et meta-tag ind i global.asa eller i toppen af den side hvor koden ligger (jeg foretrækker naturligvis global.asa, da jeg så slipper for at tænke mere på dette i resten af min webapplikation). Dette metatag ser således ud:
Som det kan ses af ovenstående er selve SQL-koden let at overskue og håndteringen af parametre til SQL-sætnignen er ret simpel (og det er godt når kode er simpelt, for så er det lettere at gennemskue og dermed mindre udsat for fejl).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.