Hej! Vad får du för fel? Tack för snabb respons - ursäkta mager bakgrundsinfo! Skulle någon vara intresserad av att, mot arvode, titta på min kod och felsöka vad som måste anpassas för att den skall funka i MySQL version 5? För att göra felsökningen lättare, testa köra en Response.Write(sql) direkt efter så man ser exakt vad den försöker göra. Klistra sedan in sqlsträngen i t.ex. mysql query browser och se om den fungerar där.Problem med syntax vid uppgradering från MySQL 4 till MySQL 5 (nybörjare)
Jag har problem med kod som fungerar i MySQL 4 men inte i MySQL 5. Jag uppgraderar för att kunna hantera kinesiska tecken i UTF-8. Koden är ganska omfattande, men jag misstänker att det är SELECT-satserna som måste anpassas så jag har plockat ut 5 exempel ur koden nedan.
Jakob H.
' EXEMPEL 1
Set rsAnswers = Server.CreateObject("ADODB.Recordset")
sql="SELECT CorrectAnswerId, CourseID, ExerciseID, ExerciseSubID, CorrectAnswer, ExerciseItemId FROM CorrectAnswers WHERE ExerciseId="& iExerciseId &" AND ExerciseSubId ="& Request.Form("exercisesubid") &" ORDER BY ExerciseItemId"
rsAnswers.Open sql, conntemp, 3, 3
+++++++++++++++++++++++++
' EXEMPEL 2
Set rsAnswersCount = Server.CreateObject("ADODB.Recordset")
sql="SELECT COUNT(0) FROM CorrectAnswers WHERE ExerciseId="& iExerciseId &" AND ExerciseSubId ="& Request.Form("exercisesubid") &" ORDER BY ExerciseItemId"
rsAnswersCount.Open sql, conntemp, 3, 3
+++++++++++++++++++++++++
' EXEMPEL 3
Set rsMistakes = Server.CreateObject("ADODB.Recordset")
sql="SELECT CommonMistakeId, CommonMistake, TeachersComment FROM CommonMistakes WHERE CorrectAnswerId="& rsAnswers.Fields("CorrectAnswerId").Value &" ORDER BY CorrectAnswerId"
rsMistakes.Open sql, Conntemp, 3, 3
+++++++++++++++++++++++++
' EXEMPEL 4
Set rsCommonMistakesCount = Server.CreateObject("ADODB.Recordset")
sql="SELECT COUNT(0) FROM CommonMistakes WHERE CorrectAnswerId="& rsAnswers.Fields("CorrectAnswerId").Value &" ORDER BY CorrectAnswerId"
rsCommonMistakesCount.Open sql, conntemp, 3, 3
+++++++++++++++++++++++++
' EXEMPEL 5
Set rsUserValues = Server.CreateObject("ADODB.Recordset")
sql="INSERT INTO LearningProfile (CourseID, ExerciseID, ExerciseSubID, StudentQueryName, CorrectAnswers) VALUES ("&storedCourseID&","&storedExerciseID&","&storedExerciseSubID&",'"&myStudent&"','"&percentRight&"')"
rsUserValues.Open sql, Conntemp, 3, 3Sv: Problem med syntax vid uppgradering från MySQL 4 till MySQL 5 (nybörjare)
Sv:Problem med syntax vid uppgradering från MySQL 4 till MySQL 5 (nybörjare)
Sidan innehåller onlineövningar med formulär där användaren skriver in sina svar. Användarens svar lagras i en array som jämförs med rätta svar i en tabell. Felaktiga svar lagras undan i en annan tabell för genomgång och användaren får meddelande om antal rätta svar på övningen. Detta fungerar i version 4.
Felet i version 5 består i att inget verkar lagras i arrayen från början, för inget presenteras på sidan och inga felaktiga svar lagras i tabellen.
Nedan följer den kod som stoppar in svaren i arrayen:
+++++++++++++++
' Denna fil (formuläret hänvisar till sig själv)
sThisFile = Request.ServerVariables("SCRIPT_NAME")
' Tom tvådimensionell array som kommer att fyllas på vid rättning
Dim arUserAnswers()
' Tom sträng som kommer innehålla sammanfattningen av antal rätt
sAnswers = ""
' Om vi ska rätta
If Not IsEmpty(Request.Form) then
ReDim arExerciseItemId(50)
intIndex = 1
' Ifall vi ska rätta select ELLER text-formulär
If Request.Form("checkthis") = "text" OR Request.Form("checkthis") = "select" then
' Loopa igenom Request.Form collection
For Each varItem in Request.Form
If varItem <> "submit" AND varItem <> "exercisesubid" AND varItem <> "checkthis" then
arExerciseItemId(intIndex) = trim(Request.Form(varItem))
intIndex = intIndex + 1
End If
Next
' Ifall vi ska rätta ett radio-formulär
ElseIf Request.Form("checkthis") = "radio" then
ReDim arTemp(10,1)
iItems = int(Request.Form("RadioItems"))
' Loopa igenom Request.Form collection
For Each varItem in Request.Form
if varItem <> "submit" AND varItem <> "exercisesubid" AND varItem <> "RadioItems" AND varItem <> "checkthis" then
' Om kontrollen inte har fler värden spara detta värde i arrayen
arTemp(intIndex,0) = varItem
arTemp(intIndex,1) = trim(Request.Form(varItem))
intIndex = intIndex + 1
End if
Next
For i = 1 To iItems
For i2 = 1 To 10
if CStr(i) = arTemp(i2,0) then
arExerciseItemId(i) = arTemp(i2,1)
Exit For
else
arExerciseItemId(i) = ""
end if
Next
Next
End if
' Hämtar rätta svaren
Set rsAnswers = Server.CreateObject("ADODB.Recordset")
........
(här börjar koden jämföra användarens svar med rätta svaren i recordset rsAnswers)
++++++++++++++++++++++++++
Om du vill titta på hela koden för att felsöka så kan jag maila den till dig. Jag har inte skrivit koden själv och har bara begränsade programmeringskunskaper, så jag är beredd att betala en hacka till den som får koden att funka i version 5!
Jakob H.
Sv: Problem med syntax vid uppgradering från MySQL 4 till MySQL 5 (nybörjare)
Jakob H. Sv:Problem med syntax vid uppgradering från MySQL 4 till MySQL 5 (nybörjare)
Annars kan felet också ligga i connectionsträngen, kan du posta den? (utan ditt riktiga lösenord förstås )
Och så kan det ju förstås bero på en felaktig installation av mysql.