Avatar billede Slettet bruger
14. februar 2004 - 00:07 Der er 12 kommentarer og
1 løsning

Tilføj/Edit/Slet i MySQL via ASP

Jeg ved ikke om det her spørgsmål skal ind under MySQL-kategorien eller om det skal være her, men jeg prøver bare her.

Jeg har for ikke særlig længe siden flyttet til MySQL fra Access Databaser. Jeg kan mange ting med Access Databaser, og kan næsten alt ind og ud, hvad angår fremkaldelse/tilføj/edit/slet.

Da jeg flyttede til MySQL for at få en bedre og hurtigere database, fandt jeg ud af, at nogle af mine gamle koder var nytteløse.

Jeg ved f.eks. ikke hvordan jeg skal tilføje ting i tabeller, slette dem eller redigere dem, og det vil jeg meget gerne finde ud af.

Jeg har ledt rundt omkring på nettet efter tutorials, men uden held. Så nu er mit spørgsmål: Er der nogen der kan lave et lille eksempel til mig med følgende ting?:

- At tilføje noget til en tabel i MySQL
- At redigere noget i en tabel i MySQL (f.eks. skifte et felts værdi)
- At slette et record i MySQL

Jeg bruger følgende forbindelse til at connecte til min MySQL:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:13 #1
Jeg ved ikke helt hvad du mener, men jeg tror du kan prøve at downloade ASPadmin v2.0 den kan både håndtere Access og MySQL:
http://www.netsrac.dk/netsrac-dk/
Avatar billede Slettet bruger
14. februar 2004 - 00:19 #2
@eagleeye:

Jeg tror jeg har fundet ud af det, men jeg er stadig meget i tvivl om edit.

Altså ved brug af Access-databaser, kan man skrive følgende for at redigere i et felt:

    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN = DSN & "DBQ=" & Server.MapPath("/db.mdb")
    Conn.Open DSN
        strSQL = "Update users set "
        strSQL = strSQL & "online= now()"
        strSQL = strSQL & " where id = " & Session("rcUserID_" & strBrugernavnlogin)
    Conn.Execute(strSQL)
    Conn.Close
    Set Conn = Nothing

Hvordan vil den kode se ud, hvis det skal bruges til at redigere i et felt i en MySQL database istedet for en access?
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:22 #3
Ok på den måde.

Jamen SQL'en er ens fra Access til MySQL dog er er nogle småting som er forskellige.
Den kode du har vist ville være den samme for MySQL, bortset fra connection strengen.

Og alt efter hvilken version du har af MySQL kan det være Now() skal hedde noget andet :)

I mySQL kan man sætte ' omkring tal, ikke nødvendigt men det muligt.

strSQL = strSQL & " where id = '" & Session("rcUserID_" & strBrugernavnlogin) & "'"
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:28 #4
I Access hedder det TOP X i mySQL LIMIT x,y
I Access er der # omkring dato i mySQL er der ' omkring:


Access SQL : "SELECT TOP 5 * FROM tabel WHERE dato=#2001-07-02#"

MySQL SQL: "SELECT * FROM tabel WHERE dato='2001-07-02' LIMIT 0,5"
Avatar billede Slettet bruger
14. februar 2004 - 00:30 #5
Okay, dvs at hele koden vil se sådan her ud:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
        strSQL = "Update users set "
        strSQL = strSQL & "online= now()"
        strSQL = strSQL & " where id = '" & Session("rcUserID_" & strBrugernavnlogin) & "'"
Conn.Execute(conStr)
Conn.Close
Set Conn = Nothing

Og ved delete vil den se sådan ud:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
  Conn.Execute("DELETE FROM [tabel] WHERE [ID] = '" & Request("ID"))
Conn.Execute(conStr)
Conn.Close
Set Conn = Nothing

Og ved tilføj:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open "SELECT * FROM ´users´", Conn, 1, 3
    rs.AddNew
        rs("registered") = Now()
        rs("IP") = Request.ServerVariables("REMOTE_ADDR")
        rs.Update
Conn.Execute(conStr)
Conn.Close
Set Conn = Nothing

Har jeg ret? Dvs det eneste der skal skiftes ud, er nogle få tegn og så connection-koden her:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr

Som skal være i toppen istedet for:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db.mdb"))

Sådan?
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:32 #6
Denne linje:
Conn.Execute(conStr)

Skal være sådan her sådan det SQL sætningen som bliver udført:

Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:34 #7
Lige en anden ting :)

MySQL bruger ikke [] omkring med reseveret ord der bruger mySQL ` "baglens ping" eller hvad den hedder. Så denne linje:

Conn.Execute("DELETE FROM [tabel] WHERE [ID] = '" & Request("ID"))

Ville være sådan her samt der mangler en ping ' til sidst:

Conn.Execute("DELETE FROM `tabel` WHERE `ID` = '" & Request("ID") & "'")

men ID er ikke reseveret ord så der behøves ikke ` omrkring
Avatar billede Slettet bruger
14. februar 2004 - 00:34 #8
Men ellers er det rigtigt nok?

Hvis det er, så siger jeg mange tak for mine små forvirrede spørgsmål ;) Og så må du også gerne oprette et svar.
Avatar billede eagleeye Praktikant
14. februar 2004 - 00:40 #9
Ja det ser rigtigt ud hvis du lige får rette de par småting som nævnt i de to sidste kommentare

Omrking  tilføj:

SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open "SELECT * FROM ´users´", Conn, 1, 3
    rs.AddNew
        rs("registered") = Now()
        rs("IP") = Request.ServerVariables("REMOTE_ADDR")
        rs.Update
Conn.Execute(conStr)
Conn.Close
Set Conn = Nothing


Der er det lavet med rs.AddNew og bruges .AddNes skal man ikke hvade Conn.Exeute, men min erfaring med mySQL ODBC driver er at .AddNew kan drille så det kan være en fordel at skrive det i ren SQL sådan her:


SQLserveradr="adresse"
SQLdatabase="databasenavn"
SQLlogin="bruger"
SQLpassword="password"
Set Conn = Server.CreateObject("ADODB.Connection")
conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"
Conn.Open conStr
strSQL = "insert into ´users´ (registered, IP) values (Now(),"
strSQL = strSQL & "'" & Request.ServerVariables("REMOTE_ADDR") & "'"
strSQL = strSQL & ")"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
Avatar billede Slettet bruger
14. februar 2004 - 00:44 #10
Okay, jeg siger mange tak. Jeg synes det virker en lillesmule forvirrende omkring det med add, men det vender jeg tilbage til en dag, hvis det ikke fungerer.
Avatar billede Slettet bruger
14. februar 2004 - 01:08 #11
Forresten, nu får jeg også denne her fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.17-standard]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 '´ID´ = 1' at line 1

Her er koden:

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "select * from retroclassics_news ORDER BY `dato` DESC LIMIT 0,5", Conn, 1, 3
Do until rs.EOF
  Do until rs.EOF
  SQL = "SELECT * FROM retroclassics_users WHERE ´ID´ = "& rs("userid") &""
  Set rsuserid = Conn.Execute(SQL)
    response.write(rsuserid("navn"))
  Loop
  rsuserid.Movenext
Loop

Problemet ligger omkring det her:
  SQL = "SELECT * FROM retroclassics_users WHERE ´ID´ = "& rs("userid") &""
  Set rsuserid = Conn.Execute(SQL)

Har du nogen idé om hvad det kan være?
Avatar billede eagleeye Praktikant
14. februar 2004 - 01:11 #12
Prøv at bruge vendt ´ til ` omkring ID:

SQL = "SELECT * FROM retroclassics_users WHERE `ID` = "& rs("userid") &""
Set rsuserid = Conn.Execute(SQL)



men det skulle ikke være nødvendig med ` omrking ID:
SQL = "SELECT * FROM retroclassics_users WHERE ID = "& rs("userid") &""
Set rsuserid = Conn.Execute(SQL)
Avatar billede Slettet bruger
14. februar 2004 - 01:12 #13
jamen det er jo helt perfekt :) Tror jeg har forstået princippet i MySQL nu :)

Endnu engang tak.
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