19. september 2006 - 17:21Der er
25 kommentarer og 1 løsning
Syntax problemer
Jeg har lavet denne lille ting som skal oprette et Table i databasen førs og derefter lave et entry deri. Det går fint med at oprette databasen (som hedder dags dato f.eks "2006_09_19") men derefter kan jeg ikke få lov til at putte noget deri og får fejlen:
Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt]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 ''2006_09_19' (ansvarlig, vagt) values(''TBZ', 'morgen')' at line 1 /vo/vagt-startstop.asp, line 95
Linie 95 er "set rs = conn.execute(strSQL)" og her er hvad den forsøger at smide i DB: strSQL="Insert into " & Request.querystring("table") & " (ansvarlig, vagt) values('" & Request.querystring("ansvarlig")& "', '" & Request.querystring("vagt") & "')"
Iøvrigt generelt en rigtig dårlig idé at repræsentere værdier som tabelnavne. Din dato skal du have i et felt i en tabel, der så indeholder alle disse oplysninger.
Jeg er enig med at det er en dårlig ide, men det er et lukket system som ikke ligger på internettet, så det gør ikke noget :-)
Desværre hjalp det ikke blot med ' på hver side af tabel navnet:
"Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt]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 'ansvarlig', 'vagt')' at line 1"
Ok, så `.. taste fejl her i kommentarfeltet, men det virker stadig ikke.
Men om du synes det er en dårlig ide eller ej kan egentlig være lige meget :-) Det skal bruges som log system, så det optimale for det system er at have datoen i tabelnavnet.
Det er først i denne del af koden at den går galt:
<%if Request.Querystring("vagt") = "morgen" and Request.QueryString("opdater")="ja" and not Request.QueryString("ansvarlig")="" then %> <!---#include file="dbcon.asp" ---> <% strSQL="Insert into `" & Request.querystring("table") & "` (ansvarlig, vagt) values('" & Request.querystring("ansvarlig")& "', '" & Request.querystring("vagt") & "')" set rs = conn.execute(strSQL)
Conn.Close set Conn = Nothing response.write = " Vagten er nu startet!"
end if %>
Her får jeg fejlen: "Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt]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 'ansvarlig', 'vagt')' at line 1"
Det peger på at det er her fejlen ligger: strSQL="Insert into `" & Request.querystring("table") & "` (ansvarlig, vagt) values('" & Request.querystring("ansvarlig")& "', '" & Request.querystring("vagt") & "')"
Men hvor? Jeg kan ikke lige se at der skulle mangle `...` omkring andre ting...?
Netop... VAGT.. for f)(/¤¤"#.. tak, den havde jeg glemt at definere :-P Det med "ansvarlig" var bare for at dække over hvad der egentlig stod i outputtet, men det var kun 6 karakterer.
Her kommer fejlen uden at jeg har ændret i teksten:
Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [MySQL][ODBC 3.51 Driver][mysqld-5.0.18-nt]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 'TBZ', 'morgen')' at line 1
Og her er koden for Create Table: <!--- OPRET TABLE ---> <%if Request.Querystring("vagt") = "morgen" and Request.QueryString("start")="ja" then%> <!---#include file="dbcon.asp" ---> <%
Const adOpenKeyset = 1 Const adLockOptimistic = 3
strSQL="CREATE TABLE " & Request.Form("dato") & " (`id` int(11) NOT NULL auto_increment, `ansvarlig` varchar(6) NOT NULL default '', `vagt` varchar(10) NOT NULL default '', `remedy` int(1) NOT NULL default '0', `fhs` int(1) NOT NULL default '0', `elog` int(1) NOT NULL default '0', `email` char(1) NOT NULL default '0', `zeel-bl` char(1) NOT NULL default '0', `status` char(1) NOT NULL default '0', PRIMARY KEY (`id`)) TYPE=MyISAM;" set rs = conn.execute(strSQL)
Og her er koden for input i table: <!-- PUT INFO I TABLE -->
<%if Request.Querystring("vagt") = "morgen" and Request.QueryString("opdater")="ja" and not Request.QueryString("ansvarlig")="" then %> <!---#include file="dbcon.asp" ---> <%
Aaaha! Så fandt jeg fejlen... og det var noget du spurgte om tidligere :-( Der var et ' i koden som blev smidt ind i den boks hvor den hiver "ansvarlig" fra.
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.