Avatar billede hobbez Nybegynder
20. september 2006 - 22:31 Der er 11 kommentarer og
1 løsning

Hjælp til opdatering af record i MySQL database (ASP newbie)

Her er min kode:

    <%error = True
    Set Rs1 = Server.CreateObject("ADODB.Recordset")
    sql_str = "Select * from cms where cms_navn = Request.Form('navn');"
    Rs1.Open sql_str, Session("Conn1"), 1, 3


UPDATE cms
SET Rs1("indhold") = Request.Form("FCKeditor1") , Rs1("date") = NOW WHERE cms_navn = Request.Form("navn");
    Rs1.Update
    error = False

%>

Jeg forsøger at opdatere en record med ukendt ID men navnet "navn"  med værdierne "indhold" fra en form og "date" med tidspunktet nu.

Jeg får:

Syntax error, unexpected ",", expecting end of statement

Det er garanteret noget simpelt :o(

/Rob
Avatar billede tdh1309 Juniormester
20. september 2006 - 22:36 #1
Prøv at ændre din sql_str til:
sql_str = "Select * from cms where cms_navn = '" & Request.Form('navn') & "';"
problemet er at request.form('navn') bliver parset...

En godt fif hvis din query fejler, er at skrive den ud på skærmen ved: response.write sql_str & "<br>"  ' udskriver streng
response.end                    ' afbryder asp

Jeg kunne forestille mig at du så vil få resultatet:
Select * from cms where cms_navn = Request.Form('navn');
Avatar billede hobbez Nybegynder
20. september 2006 - 22:43 #2
Tak for buddet, men det giver nu fejl i den linie du bad mig ændre.

Det er denne linie der fejler:

SET Rs1("indhold") = Request.Form("FCKeditor1") , Rs1("date") = NOW WHERE cms_navn = Request.Form("navn");

/Rob
Avatar billede kjulius Novice
21. september 2006 - 00:10 #3
Når du bruger ADO og åbner et recordset, skal du ikke bruge en SQL UPDATE sætning. Du navigerer til den række du ønsker at ændre (hvis du da ikke allerede er på den rigtige række - du starter automatisk på første række med din .open instruktion), tildeler nye værdier til de felter der skal ændres og udfører din .update instruktion på dit recordset:

    <%error = True
    Set Rs1 = Server.CreateObject("ADODB.Recordset")
    sql_str = "Select * from cms where cms_navn = Request.Form('navn');"
    Rs1.Open sql_str, Session("Conn1"), 1, 3


    Rs1("indhold") = Request.Form("FCKeditor1")
    Rs1("date") = NOW
    Rs1.Update
    error = False

%>
Avatar billede hobbez Nybegynder
21. september 2006 - 01:15 #4
Jaaaaah, nu fejler det ikke :o)

Men data bliver ikke opdateret i databasen :o(

/Rob
Avatar billede kjulius Novice
21. september 2006 - 01:50 #5
Hmm, det var mærkeligt. Husker du også at lukke recordsættet igen?

rs1.close
Avatar billede hobbez Nybegynder
21. september 2006 - 19:17 #6
Ændrer ikke noget :o(

Har forsimplet koden:

<%error = True

    Set Rs1 = Server.CreateObject("ADODB.Recordset")
    sql_str = "Select * from cms where cms_navn = 'huskeliste';"
    Rs1.Open sql_str, Session("Conn1"), 1, 3
    Rs1("indhold") = "Nyt indhold"
    Rs1.Update
    Rs1.close
    error = False

%>

Funker stadig ikke :o(
Avatar billede kjulius Novice
21. september 2006 - 22:46 #7
Og du har en række i tabellen cms hvor værdien af feltet cms_navn er 'huskeliste'?


Prøv evt. at indføje et tjek på, at navnet findes:

<%error = True

    Set Rs1 = Server.CreateObject("ADODB.Recordset")
    sql_str = "Select * from cms where cms_navn = 'huskeliste';"
    Rs1.Open sql_str, Session("Conn1"), 1, 3

If Rs1.EOF Then Response.Write "Der findes ingen ved navn huskeliste!"

    Rs1("indhold") = "Nyt indhold"
    Rs1.Update
    Rs1.close
    error = False

%>
Avatar billede hobbez Nybegynder
21. september 2006 - 22:52 #8
Ja, det har jeg.

Og jeg kan godt LÆSE fra databasen:

  <%Set Rs1 = Server.CreateObject("ADODB.Recordset")
sql_str = "Select * from cms where cms_navn = 'huskeliste';"
Rs1.Open sql_str, Session("Conn1")
if Rs1.EOF then
    Response.Write "Desværre - der er ikke noget indhold."
else
      Response.Write Rs1("indhold")

end if     
     
Rs1.Close%>
Avatar billede kjulius Novice
22. september 2006 - 00:28 #9
Tja, jeg ved virkelig ikke efterhånden...

Prøv at ændre din open til

Rs1.Open sql_str, Session("Conn1"), adOpenKeyset, adLockOptimistic

Det skulle jo være det samme som dine tal, men man skal jo prøve...

Er der defineret en primær key på tabellen? - ellers kan den sikkert ikke opdateres.
Avatar billede hobbez Nybegynder
22. september 2006 - 01:10 #10
Ja, der er primær key på tabellen. Jeg har en auto_increment ID på som primær key og har også index på "cms_navn" feltet.

Ovenstående gav i øvrigt:

Error Type:
ADODB.Recordset.1 (0x80020009)
Unsupported Lock Type.


I øvrigt mange tak for din ihærdighed.

/Rob
Avatar billede hobbez Nybegynder
20. oktober 2006 - 17:55 #11
Jeg har fundet en anden løsning. Læg svar så du kan få point.

/Rob
Avatar billede hobbez Nybegynder
25. april 2008 - 02:16 #12
Så lukker jeg her.
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