Avatar billede rille101 Nybegynder
01. december 2007 - 18:03 Der er 13 kommentarer og
1 løsning

Et slemt rod med forbindelse i update fil til Mysql

Hej.
Nu må jeg kapitulere og spørge om hjælp.
Jeg har længe rodet med en fil der skal kunne opdatere en post i min Mysql database.

Jeg har fra begyndelsen haf problemer med forskellige fejl der har skyldtes forbindelsen til databasen.

Jeg er netop skiftet fra access til mysql, og eftersom jeg har prøvet en masse forskellige ting for at få det til at virke, ser koderne efterhånden sikkert meget mærkelige ud, men her er de:

retvare_rc.asp:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Response.Buffer = True %>
<!--#include file="Connections/MySqlConn.asp" -->
<%

if request.querystring("pageid") = "update" then

'-- Billede upload script start --
Set Upload = Server.CreateObject("Persits.Upload")
Upload.OverwriteFiles = False
Count = Upload.SaveVirtual ("images/varer/")
Set img1 = Upload.Files("img1")
'-- Billede upload script slut --


'-- Connection start --
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = conn
'-- "Connection start" slut --



strSQL = "update varer set dato=dato"
If upload.form("fjern") = "true" then strSQL = strSQL & ", img1='/images/varer/no_image.jpg'" else
If Not img1 Is Nothing Then strSQL = strSQL & ", img1='"& "/images/varer/" & img1.FileName &"'" end if
strSQL = strSQL & ", varenavn='"& upload.form("varenavn") &"'"
strSQL = strSQL & ", beskrivelse='"& upload.form("beskrivelse") &"'"
strSQL = strSQL & ", pris='"& upload.form("pris") &"'"
strSQL = strSQL & ", lagerstatus='"& upload.form("lagerstatus") &"'"
strSQL = strSQL & ", antal='"& upload.form("antal") &"'"
strSQL = strSQL & ", gruppe='"& upload.form("gruppe") &"'"
strSQL = strSQL & ", tilbud='"& upload.form("tilbud") &"'"
strSQL = strSQL & ", farve='"& upload.form("farve") &"'"
strSQL = strSQL &" where id = " + upload.form("id") + "''"
rs.Open strsql, conn, 1, 3
'-- "opdater record" slut

response.Redirect("vareDetail.asp?opdatering=ok&id=" & upload.form("id"))
else


'--opret forb. til db via connectionfil--
Set RSvareDetail = Server.CreateObject("ADODB.Recordset")
RSvareDetail.ActiveConnection = conn
'--opret forb. til db via connectionfil slut--
RSvareDetail.Open "SELECT * FROM varer",conn
%>

...og så en form til opdatering


MySqlConn.asp:
<%
set conn = server.createobject("ADODB.connection")
conn.open "Driver={MySQL ODBC 3.51 Driver};Server=db.domæne.dk;Database=xxxxxx;UID=xxxxxx;PWD=yyyyyy"
%>

Når jeg går ind på siden kan jeg se og udfylde opdateringsformen, men når jeg så trykker på submit knappen får jeg pt. denne fejl:


Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
/retvare_rc.asp, line 35

Er der nogen der kan hjælpe mig med at få skidtet til at virke?
Avatar billede nielle Nybegynder
01. december 2007 - 18:40 #1
Man kan langt bedre se eventuelle fejl, hvis man indrykker koden som vist nedenfor.

Jeg har rettet et par fejl, bl.a. er en

... Else If ...

blevet lavet om til en:

... ElseIf ....

hvilket er noget helt andet:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Response.Buffer = True %>
<!--#include file="Connections/MySqlConn.asp" -->
<%
If Request.QueryString("pageid") = "update" Then
    '-- Billede upload script start --
    Set Upload = Server.CreateObject("Persits.Upload")
    Upload.OverwriteFiles = False

    Count = Upload.SaveVirtual("images/varer/")

    Set img1 = Upload.Files("img1")
    '-- Billede upload script slut --

    '-- Connection start --
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.ActiveConnection = conn
    '-- "Connection start" slut --

    strSQL = "UPDATE varer SET dato = date()"

    If Upload.Form("fjern") = "true" Then
        strSQL = strSQL & ", img1='/images/varer/no_image.jpg'"
    ElseIf Not img1 Is Nothing Then
        strSQL = strSQL & ", img1 = '/images/varer/" & img1.FileName & "'"
    End If

    strSQL = strSQL & ", varenavn = '" & Upload.Form("varenavn") & "'"
    strSQL = strSQL & ", beskrivelse = '" & Upload.Form("beskrivelse") & "'"
    strSQL = strSQL & ", pris = '" & Upload.Form("pris") & "'"
    strSQL = strSQL & ", lagerstatus = '" & Upload.Form("lagerstatus") & "'"
    strSQL = strSQL & ", antal = '" & Upload.Form("antal") & "'"
    strSQL = strSQL & ", gruppe = '" & Upload.Form("gruppe") & "'"
    strSQL = strSQL & ", tilbud = '" & Upload.Form("tilbud") & "'"
    strSQL = strSQL & ", farve = '" & Upload.Form("farve") & "'"
    strSQL = strSQL & " WHERE id = " & Upload.Form("id") & "'"

    rs.Open strsql, conn, 1, 3
    '-- "opdater record" slut

    Response.Redirect("vareDetail.asp?opdatering=ok&id=" & upload.form("id"))
Else
    '--opret forb. til db via connectionfil--
    Set RSvareDetail = Server.CreateObject("ADODB.Recordset")
    RSvareDetail.ActiveConnection = conn
    '--opret forb. til db via connectionfil slut--

    RSvareDetail.Open "SELECT * FROM varer", conn
%>

Jeg ved ikke om du har mere kode på din side, men her mangler der ad en afsluttende Enf If.
Avatar billede rille101 Nybegynder
01. december 2007 - 21:24 #2
Hej Nielle.
Tak for dine forslag. :-)
Jeg har mere kode på siden end det jeg viser, og den sidste "end if" kommer for enden af siden.
Der er ikke umiddelbart nogen problemer med mine "if statements"
linje 35, hvor fejlen er, hedder:
rs.Open strsql, conn, 1, 3

Så jeg er ret sikker på at det er den første connection og min update record der er skyld i, at siden ikke virker.
Ellers ville jeg ikke kunne få vist selve updateformen.
Avatar billede nielle Nybegynder
01. december 2007 - 21:36 #3
Hvad så med at afvikle den ,med Conn.Execite() i stedet?

rs.Open strsql, conn, 1, 3

ændres til:

Conn.Execute(strsql)
Avatar billede rille101 Nybegynder
01. december 2007 - 21:43 #4
Hmm.
Så får jeg fejlen:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.41-log]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
Avatar billede nielle Nybegynder
01. december 2007 - 21:55 #5
Prøv med en connection string over denne skabelon:

Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDataBase; User=myUsername;Password=myPassword;Option=3;
Avatar billede rille101 Nybegynder
01. december 2007 - 22:04 #6
Det er den desværre ligeglad med.
Jeg får den samme fejl.
Både med
Conn.Execute(strsql) og rs.Open strsql, conn, 1, 3
:-(
Avatar billede nielle Nybegynder
01. december 2007 - 22:20 #7
Fejlen fra 01/12-2007 21:43:12 tyder på at der er en fejl i selve SQL sætningen. Prøv derfor at udskrive den for at den sendes igenne Execute(). Hvad er resultatet?
Avatar billede rille101 Nybegynder
02. december 2007 - 09:48 #8
Når du siger udskrive den, mener du så, at lave en Select, i stedet for en update?

Prøvede lige at ligge dette ind, hvor jeg kalder forbindelsen:
conn.CursorLocation = 3

Det giver fejlen:
[MySQL][ODBC 3.51 Driver][mysqld-5.0.41-log]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 ' varenavn='cdxcsd', beskrivelse='bfgbfgb', pris='545', lagerstatus='bfgbfgb', an' at line 1

men er det et skridt tættere på en løsning, eller et skridt længere væk?
Avatar billede nielle Nybegynder
02. december 2007 - 09:51 #9
Nej, jeg mener udskrive den på hjemmesiden sådan at vi kan se hvordan den ser ud:

Response.Write "DEBUG: " & strsql & "<br>"
Conn.Execute(strsql)
Avatar billede rille101 Nybegynder
03. december 2007 - 07:13 #10
Nåh, ok.
Så skriver den således.

DEBUG: update varer set, varenavn='uuuujjjj', beskrivelse='bfgbfgbhhhuuuu', pris='5666', lagerstatus='bfgbfgbjj', antal='4', gruppe='trgfg', tilbud='u', farve='' where id = 2''

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

[MySQL][ODBC 3.51 Driver][mysqld-5.0.41-log]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 ' varenavn='uuuujjjj', beskrivelse='bfgbfgbhhhuuuu', pris='5666', lagerstatus='bf' at line 1
Avatar billede rille101 Nybegynder
03. december 2007 - 14:11 #11
Nu fik jeg det til at virke:
havde ikke lige set, at der skulle & i stedet for + til ved WHERE Men det er jo klart, når der er '' udenom...
Smid et svar :-)

Den virkende sql:

strSQL = "update varer set varenavn ='" & upload.form("varenavn") &"'"
If upload.form("fjern") = "true" then strSQL = strSQL & ", img1='/images/varer/no_image.jpg'" else
If Not img1 Is Nothing Then strSQL = strSQL & ", img1='"& "/images/varer/" & img1.FileName &"'" end if
strSQL = strSQL & ", varenavn='"& upload.form("varenavn") &"'"
strSQL = strSQL & ", beskrivelse='"& upload.form("beskrivelse") &"'"
strSQL = strSQL & ", pris='"& upload.form("pris") &"'"
strSQL = strSQL & ", lagerstatus='"& upload.form("lagerstatus") &"'"
strSQL = strSQL & ", antal='"& upload.form("antal") &"'"
strSQL = strSQL & ", gruppe='"& upload.form("gruppe") &"'"
strSQL = strSQL & ", tilbud='"& upload.form("tilbud") &"'"
strSQL = strSQL & ", farve='"& upload.form("farve") &"'"
strSQL = strSQL &" where id = '" & upload.form("id") &"'"
Avatar billede nielle Nybegynder
03. december 2007 - 17:20 #12
Svar :^)
Avatar billede rille101 Nybegynder
04. december 2007 - 11:58 #13
Takker!
Avatar billede nielle Nybegynder
04. december 2007 - 19:11 #14
Selv tak for point :^)
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