Avatar billede morten_soegaard Nybegynder
22. december 2004 - 17:54 Der er 21 kommentarer og
2 løsninger

Fejl i MySql streng

Hej

Jeg skal tilføje noget til en database med en SQl streng. Jeg er vandt til at blive et recordset til at tilføje med, men vil du prøve med mysql. Min kode ser således ud:

Set my_conn = Server.CreateObject("ADODB.Connection")
my_conn.Open "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=; UID=; ;"

strSQL = "INSERT INTO gaestebog (overskrift, besked, navn, mail, dato, ip) VALUES('"overskrift"', '"besked"', '"navn"', '"mail"', '"dato"', '"ip"')"


Den melder fejl i strengen. Men skal der laves en execute eller hvordan gør man?

Mvh Morten
Avatar billede arne_v Ekspert
22. december 2004 - 18:32 #1
Mangler der ikke nogle & tegn ?
Avatar billede arne_v Ekspert
22. december 2004 - 18:33 #2
strSQL = "INSERT INTO gaestebog (overskrift, besked, navn, mail, dato, ip) VALUES('" & overskrift & "', '" & besked & "', '" & navn & "', '" & mail & "', '" & dato & "', '" & ip & "')"
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 18:36 #3
Nu melder den hvertfald ik fejl men det bliver ik tilføjet til databasen?

Her er koden til hele tilføjningsfilen:

    overskrift = Request.Form("overskrift")
    besked = Request.Form("besked")
    navn = Request.Form("navn")
    mail = Request.Form("mail")
    dato = FormatDateTime(Now, vbShortDate)
    ip = Request.ServerVariables("REMOTE_ADDR")
   
    besked = Replace(besked,vbCRLF,"<br>")

    Set my_conn = Server.CreateObject("ADODB.Connection")
    my_conn.Open "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=; UID=; ;"

    strSQL = "INSERT INTO gaestebog (overskrift, besked, navn, mail, dato, ip) VALUES('" & overskrift & "', '" & besked & "', '" & navn & "', '" & mail & "', '" & dato & "', '" & ip & "')"
Avatar billede arne_v Ekspert
22. december 2004 - 18:37 #4
Er alle 5 felter i databasen varchar ?
Avatar billede cpufan Juniormester
22. december 2004 - 18:45 #5
my_Conn.execute(strSQL)
Avatar billede arne_v Ekspert
22. december 2004 - 19:01 #6
Ja den er jo nok nødvendig !

:-)
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 19:35 #7
Så virker det :)

Bortset fra datoen.. Den kan ikke vise siden pga. den ik har tilføjet datoen ordentlig til databasen...

dato = FormatDateTime(Now, vbShortDate)

Sku det ikke være rigtigt?
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 19:45 #8
arne v> Nej de er af typerne: Int, Text og date
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 19:54 #9
Har fundet ud af det...

Send et svar og i får pointene
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 19:58 #10
Hmm det troede jeg men det virker stadig ik... Jeg fjernede de to '' tegn i strSQL da datoen er et tal.. Det ændrede ik fejlen.. Hvad kan det så være?
Avatar billede cpufan Juniormester
22. december 2004 - 20:00 #11
strSQL = "INSERT INTO gaestebog (overskrift, besked, navn, mail, dato, ip) VALUES('" & overskrift & "', '" & besked & "', '" & navn & "', '" & mail & "', #" & dato & "#, '" & ip & "')"
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 20:05 #12
Du fik den slet ik tilføjet...
og meldte denne fejl ved mysql execute...?
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 20:10 #13
Hmm det blev vist lidt underligt formuleret... Men det laver fejl i tilføjelsen som er i den linje med execute.
Avatar billede arne_v Ekspert
22. december 2004 - 20:12 #14
Kan du poste fejlmeddelelsen ?
Avatar billede cpufan Juniormester
22. december 2004 - 20:13 #15
nej det er der ged i...
mysql vil have datoen i formatet yyyy-mm-dd
så du skal lave en dato derser sådan ud.
Avatar billede cpufan Juniormester
22. december 2004 - 20:16 #16
dato = year(date) & "-" & month(date) & "-" & day(date)
så skulle det være på plads...
Og sql'en med en mysql og dato er uden # så den ser sådan ud:

strSQL = "INSERT INTO gaestebog (overskrift, besked, navn, mail, dato, ip) VALUES('" & overskrift & "', '" & besked & "', '" & navn & "', '" & mail & "', '" & dato & "', '" & ip & "')"
Avatar billede cpufan Juniormester
22. december 2004 - 20:28 #17
måske du skulle tilføje:

besked = Replace(besked,vbCRLF,"<br>")
besked = Replace(besked,"'","''") ' for at undgå at hvis folk skriver ' breaker den din sql-sætning
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 21:07 #18
Nu virker det sørme.. Hvor skønt... Men nu står datoen jo omvendt når man udskriver den, er man nød til at ændre det når man udskriver den så?
Avatar billede arne_v Ekspert
22. december 2004 - 21:10 #19
MySQL har nogle indbyggede funktioner til formatering af DATETIME felter. Måske
kunne du bruge en af dem.

Se f.eks. DATE_FORMAT her http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Avatar billede morten_soegaard Nybegynder
22. december 2004 - 21:10 #20
Jeg har fået det til at vise datoen rigtig....

Jeg takker mange gange for hjælpen.. Nu skal jeg bare af med mine points.
Avatar billede cpufan Juniormester
22. december 2004 - 21:34 #21
du får et svar herfra
Avatar billede arne_v Ekspert
22. december 2004 - 21:41 #22
ditto
Avatar billede cpufan Juniormester
23. december 2004 - 00:13 #23
på den side der skal udskrive datoen kan du i toppen af koden blot skrive
session.lcid = 1030
så udskrives den efter danske regler, og ja når det er session-sat så
virker det og derefter på andre sider.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester