Avatar billede lazeric Nybegynder
05. april 2006 - 12:09 Der er 13 kommentarer og
1 løsning

Sæt ind i MySQL

Hej
Jeg skal netop til at prøve mig med MySQL og jeg har løbet hovedet mod muren :-)
Nedenstående script virker til accessDB, men hvordan skal jeg lave det for at det virker til MySQL?

<%if Request.QueryString("mode")="save" then %> <%
response.buffer = true

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/base.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From tagwall"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("dato") = now()
      rs("forfatter") = Request.form("forfatter")
      rs("email") = Request.form("email")     
      rs("http") = Request.form("http")
      rs("description") = Server.HTMLEncode(Request.form("description"))
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
response.redirect "default.asp?page=tagwall"
%><%end if%>
Avatar billede mitbrugernavn Praktikant
05. april 2006 - 12:17 #1
har lige siddet med det samme og min fejl lå i følgende:

  strSQL = "Select * From tagwall"

skal være

  strSQL = "Select From tagwall"
Avatar billede eagleeye Praktikant
05. april 2006 - 12:17 #2
Du skal havde rettet din Conn.Open så connection strengen passer med mysql:

Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/base.mdb") & ";UID=admin;PWD=;"


Så den skal rette til noget som dette, du skal havde rettet, SERVER, DATABASE, UID og PWD til så det passer med din database:

Conn.Open "DRIVER={MySql}; SERVER=databserne.dk; DATABASE= database_navn; UID=brugernavn; PWD=brugerpassword"



Har du et web-hotel har du nok modtaget de oplysninger i en email på et tidspunkt.
Avatar billede fennec Nybegynder
05. april 2006 - 12:17 #3
MySQL understøtter ikke den for for indsættelse. Der skal du bruge sql-syntaxen.

conn.execute("insert into dinTabel(kol1, kol2) values('tekst', 123)")
Avatar billede mitbrugernavn Praktikant
05. april 2006 - 12:24 #4
har brugt den således:

StrConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=admin_ep;"

StrConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=har du fået oplyst fra udbyder; DATABASE=db navn;UID=har du fået oplyst fra udbyder; PWD=har du fået oplyst fra udbyder"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnection

strSQL="Insert into tabelnavn(blabla,blabla2) values('" & Request.Form("blabla") & "', '" & Request.Form("blabla2") & "')"
set rs = conn.execute(strSQL)
Avatar billede mitbrugernavn Praktikant
05. april 2006 - 12:24 #5
uden den øverste strconnection

StrConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=har du fået oplyst fra udbyder; DATABASE=db navn;UID=har du fået oplyst fra udbyder; PWD=har du fået oplyst fra udbyder"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConnection

strSQL="Insert into tabelnavn(blabla,blabla2) values('" & Request.Form("blabla") & "', '" & Request.Form("blabla2") & "')"
set rs = conn.execute(strSQL)
Avatar billede lazeric Nybegynder
05. april 2006 - 12:40 #6
Er det her helt ved siden af?

<%
SQLserveradr="mydb1.surf-town.net"
SQLdatabase="nivek_so"
SQLlogin="nivek_nivek"
SQLpassword="636600"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr

Const adOpenKeyset = 1
Const adLockOptimistic = 3

    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values('"now()"','" & Request.Form("forfatter") & "', '"Request.ServerVariables("REMOTE_ADDR")"','" & Request.Form("besked") & "')"
    set rs = conn.execute(strSQL)

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
response.redirect "?x=snakkesnakke"
%><%end if%>
Avatar billede eagleeye Praktikant
05. april 2006 - 13:12 #7
Det ser ganske fint ud. Du kan evt. rette SQL sætningen til dette da now() ógså er en indbygget funktion i mysql

    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values(NOW(),'" & Request.Form("forfatter") & "', '"Request.ServerVariables("REMOTE_ADDR")"','" & Request.Form("besked") & "')"
Avatar billede fennec Nybegynder
05. april 2006 - 13:14 #8
Jeg vil se at få ændret dit password, da alle nu kan få forbindelse til din DB. Du har lige vist os alle oplysninger til at skaffe forbindelse...
Avatar billede eagleeye Praktikant
05. april 2006 - 13:14 #9
hov der magler et par & i SQL Sætning:

    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values(NOW(),'" & Request.Form("forfatter") & "', '" & Request.ServerVariables("REMOTE_ADDR") & "','" & Request.Form("besked") & "')"
Avatar billede eagleeye Praktikant
05. april 2006 - 13:28 #10
Men de kolonner der er i sql sætningen dato,forfatter,ipadresse,besked er ikke de samme som den du har i spørgsmålet hvor der er dato,forfatter,email,http,description

Hvilke er de rigige?

Det er stadig en god ide at køre HTMLencode på beskeden som du har gjort i kode i spørgsmålet. Derud over er det også en god ide at tage stilling til tegnet ' om det skal tillades eller ej for hver kolonne. Umiddelbart bør det kun tillades i besked og der tager .HTMLencode sig af det, men for forfatter bør man fjerne ':

    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values(NOW(),'" & request(Request.Form("forfatter"),"'","") & "', '" & Request.ServerVariables("REMOTE_ADDR") & "','" & Server.HTMLencode(Request.Form("besked")) & "')"
Avatar billede lazeric Nybegynder
05. april 2006 - 14:01 #11
Det er godt nok den sidste der er den jeg vil bruge.

Nu virker det i princippet. Den lægger det i databasen, men jeg får stadig en fejl.
Her er koden:

<%
SQLserveradr="xxx"
SQLdatabase="xxx"
SQLlogin="xxx"
SQLpassword="xxx"

Set Conn = Server.CreateObject("ADODB.Connection")

conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr

Const adOpenKeyset = 1
Const adLockOptimistic = 3

    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values(NOW(),'" & Request.Form("forfatter") & "', '" & Request.ServerVariables("REMOTE_ADDR") & "','" & Server.HTMLencode(Request.Form("besked")) & "')"
    set rs = conn.execute(strSQL)

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
response.redirect "?x=snakkesnakke"
%>

Her er fejlen i browseren:

Error Type:
ADODB.Recordset.1 (0x800A0E78)
Invalid operation on closed object
sider/forum.asp, line 95

Og eagleeye, smid lige din kommentar som et svar, du har sku hjulpet rigtig meget.

Og ja... DOH med at jeg lige fik smidt alt info ind til db.. lidt for hurtig med coopy paste... jeg ændrer det selvfølgelig med det samme :-)
Avatar billede eagleeye Praktikant
05. april 2006 - 14:07 #12
Ok her et svar.

Til den sidst fejl så fjern disse to linier fra koden da du ikke længere benytter et recordset :)

    rs.Close
    Set rs = Nothing
Avatar billede eagleeye Praktikant
05. april 2006 - 14:10 #13
Med hensyn til min SQL sætning i 05/04-2006 13:28:26 så kan jeg se jeg har skrever request i stedet for replace :) den skulle være sådan her så du ikke får en fejl hvis folk skriver et ' i navnet.:


    strSQL="Insert into forum (dato,forfatter,ipadresse,besked) values(NOW(),'" & replace(Request.Form("forfatter"),"'","") & "', '" & Request.ServerVariables("REMOTE_ADDR") & "','" & Server.HTMLencode(Request.Form("besked")) & "')"
Avatar billede lazeric Nybegynder
05. april 2006 - 14:38 #14
tak igen :)
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
Kurser inden for grundlæggende programmering

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