Avatar billede burgers Nybegynder
10. februar 2005 - 13:32 Der er 12 kommentarer og
1 løsning

Ændre i MySQL

Hej, jeg har konverteret min ACCESS database til MySQL, og forsøger nu at få dette ASP-script til at virke. Hvad skal ændres udover connection for at skrive i MySQL-databasen?

<%
Response.Buffer = true
Response.CacheControl = "no-cache"
Response.Expires = -1
%>

<!-- #include file="Adovbs.inc" -->
<%   
    strNews = Request.Form("News")
   
        Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={mysql};SERVER=mysql.mondohosting.net;UID=xxx;PWD=xx;DATABASE=xx"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL="SELECT * FROM News WHERE idNews=" & strNews
    rs.Open strSQL, Conn, 1, 3
   
    if not rs.eof then
        if len(Request.Form("NewsHeader")) < 1 then
            strRedirect = "News.asp"
            Response.Redirect strRedirect
        end if
       
        if len(Request.Form("Source")) < 1 then
            strRedirect = "News.asp"
            Response.Redirect strRedirect
        end if
       
        rs("NewsHeader") = Request.Form("NewsHeader")   
        rs("Source") = Request.Form("Source")
   
    end if

    rs.update
    rs.Close
    set rs = Nothing
   
        strRedirect = "News.asp"
   
    Response.Redirect strRedirect
%>



<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>

<P>&nbsp;</P>

</BODY>
</HTML>
Avatar billede fennec Nybegynder
10. februar 2005 - 13:39 #1
Det er nemmere bare at bruge connectionen til at updatere...

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={mysql};SERVER=mysql.mondohosting.net;UID=xxx;PWD=xx;DATABASE=xx"
Conn.execute("update News set NewsHeader='"& Request.Form("NewsHeader") &"', Source='"& Request.Form("Source") &"' WHERE idNews=" & strNews)
strRedirect = "News.asp"
Response.Redirect strRedirect
Avatar billede burgers Nybegynder
10. februar 2005 - 13:49 #2
Dvs. den skal se sådan ud:

<%
Response.Buffer = true
Response.CacheControl = "no-cache"
Response.Expires = -1
%>

<!-- #include file="Adovbs.inc" -->
<%   
        Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={mysql};SERVER=mysql.mondohosting.net;UID=xx;PWD=xx;DATABASE=xx"
        Conn.execute("update News set NewsHeader='"& Request.Form("NewsHeader") &"', Source='"& Request.Form("Source") &"' WHERE idNews=" & strNews)
        strRedirect = "News.asp"
        Response.Redirect strRedirect
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>

<P>&nbsp;</P>

</BODY>
</HTML>


Det funker stadig ikke.
Avatar billede fennec Nybegynder
10. februar 2005 - 13:54 #3
får du en fejl??
Avatar billede burgers Nybegynder
10. februar 2005 - 13:58 #4
Næh, den skriver bare "Siden kan ikke vises" og så "Der opstod en intern HTTP 500 serverfejl".

Jeg har luret mig frem til nu at det er denne linie den brokker sig over:

Conn.execute("update News set NewsHeader='"& Request.Form("NewsHeader") &"', Source='"& Request.Form("Source") &"' WHERE idNews=" & strNews)
Avatar billede burgers Nybegynder
10. februar 2005 - 14:00 #5
Gør det nogen forskel at det ikke er alle data i tabellen du ændrer på?
Avatar billede fennec Nybegynder
10. februar 2005 - 14:03 #6
Du skal lige have slået "fejlvisning" til i browseren.

funktioner >> internetinstillinger >> advanceret >> fjern hak i "vis meddelser om uskadelige http-fejl"
Avatar billede burgers Nybegynder
10. februar 2005 - 14:11 #7
Ahh, så blev jeg også lidt klogere her :-)

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

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 '' at line 1

/savenews.asp, line 11
Avatar billede fennec Nybegynder
10. februar 2005 - 14:17 #8
Det kunne være en ' fejl. Kan ikke helt huske om MySQL godtager \' eller '', men det er jo bare at prøve:

Conn.execute("update News set NewsHeader='"& replace(Request.Form("NewsHeader"),"'","''") &"', Source='"& replace(Request.Form("Source"),"'","''") &"' WHERE idNews=" & strNews)

eller:
Conn.execute("update News set NewsHeader='"& replace(Request.Form("NewsHeader"),"'","\'") &"', Source='"& replace(Request.Form("Source"),"'","\'") &"' WHERE idNews=" & strNews)
Avatar billede burgers Nybegynder
10. februar 2005 - 14:21 #9
Jeg får samme fejl ved begge disse løsninger.
Avatar billede fennec Nybegynder
10. februar 2005 - 14:23 #10
Så skal vi lige have den udskrevet på skærmen:

sql = "update News set NewsHeader='"& Request.Form("NewsHeader") &"', Source='"& Request.Form("Source") &"' WHERE idNews=" & strNews
response.write sql
response.end
Conn.execute(sql)
Avatar billede fennec Nybegynder
10. februar 2005 - 14:35 #11
Det ser foresten ud til at du mangler:

strNews = Request.Form("News")
Avatar billede burgers Nybegynder
10. februar 2005 - 14:40 #12
Jeg beklager meget, men jeg har fundet fejlen i egne rækker - den fik ikke hentet idNews med pga en slåfejl. Dit første forslag virker til UG.

Smid et svar så du kan få nogle velfortjente point.

Nu jeg har dig - hvad hvis jeg skal oprette/slette i databasen? Hvordan ville den samme forespørgsel så se ud?
Avatar billede fennec Nybegynder
10. februar 2005 - 14:44 #13
Har lige svaret på det i MS-SQL katagorien, men det er samme måde i MySQL :o)
http://www.eksperten.dk/spm/589673

.o) <-- One Eyed Jack
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