Avatar billede skipper4230 Nybegynder
01. maj 2003 - 23:16 Der er 13 kommentarer og
1 løsning

MYSQL - update - runtime error '800a000d' type mismatch

jeg har forsøgt flere forskellige versioner af updata via asp til mysql uden held.

Er der nogen der kan gennemskue problemstillingen?

forsøg 1:

Set DataConn = Server.CreateObject("ADODB.Connection")
DataConn.Open "DRIVER={MySql}; SERVER=mysql.siden.dk; DATABASE=test; UID=test; PWD=test;"

SQL = "Select * From links WHERE ID = '" & Request.querystring("id") & "';"

Set rs = DataConn.Execute(SQL)
strUrl = rs("url")
If (rs.BOF or rs.EOF) Then
'fejl opstået
Else
Session("Id") = rs("id")
hits = rs("hits") + 1
newSQL = "UPDATE `links` SET `hits`='" & hits & "' WHERE `ID` = '" & Request.querystring("id") & "';"
DataConn.Execute newSQL
End If
DataConn.Close
set DataConn = Nothing
Response.Redirect(strURL)


forsøg2:
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={MySql}; SERVER=mysql.siden.dk; DATABASE=test; UID=test; PWD=test"
If Request.QueryString("id") <> "" Then
    Set rs = Server.CreateObject("ADODB.RecordSet")
    ident = Request.QueryString("id")
    strSQL = "SELECT * FROM links WHERE (ID = '" & Request.querystring("id") & "'" & ")"
    rs.Open strSQL, myConn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs("hits") = rs("hits") + 1
        strURL = rs("url")
        rs.Update
        rs.Close
        myConn.Close
        Set rs = Nothing
        Set myConn = Nothing
        Response.Clear
        Response.Redirect(strURL)
    End If
End If



linkidét vises i url adressen  "...._dk.asp?mode=id&id=404" så den har et id.
Selve feltet ID har jeg i MYSql givet en datatype int(11).
Avatar billede eagleeye Praktikant
01. maj 2003 - 23:19 #1
Umiddelbart ville jeg ikke tror der skulle ´ omrking eller det svare måske til [] omkring kolonnenavne:

newSQL = "UPDATE links SET hits='" & hits & "' WHERE ID = '" & Request.querystring("id") & "';"
Avatar billede medions Nybegynder
01. maj 2003 - 23:19 #2
Med mysql i ASP bør du lave en rigtig INSERT sætning og ikke bruge ADOs rs.update

//>Rune
Avatar billede medions Nybegynder
01. maj 2003 - 23:20 #3
De er nogle få ting der typisk går galt. Eller gjorde i "gamle" dage :)
En var noget med at ADO ikke vil putte en for lang streng ind i et felt,
som er det samme som hvis det var en Access DB. Men mysql-driveren afleverede
ikke max længde på feltet, men kun længden af det aktuelle felt.

Så stod der "halmballe", kunne man godt lave det om det "roekule", men
ikke til "mejetærsker".

Men nye mysql-drivere kan have det bedre med det ... måske!

//>Rune
Avatar billede eagleeye Praktikant
01. maj 2003 - 23:51 #4
Har du prøvet som jeg forslog eller får du en ny eller samme fejl?
Avatar billede skipper4230 Nybegynder
02. maj 2003 - 06:53 #5
har forsøgt både at fjerne ' og bruge INSERT istedet for UPDATE - stadig samme fejl - ÆV
Avatar billede eagleeye Praktikant
02. maj 2003 - 08:45 #6
PRøv at konverete Rs("hits") til Clng, men jeg tror ikke det ændre det store.

hits = CLng(rs("hits")) + 1
Avatar billede eagleeye Praktikant
02. maj 2003 - 16:38 #7
Får du et linje nummer hvor fejlen er?
Og hvordan lyder fejlkoden ordret?
Avatar billede skipper4230 Nybegynder
02. maj 2003 - 18:12 #8
Ja, begge dele

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

[TCX][MyODBC]You have an error in your SQL syntax near 'WHERE ID = '494'' at line 1

links_dk.asp, line 56
Avatar billede skipper4230 Nybegynder
02. maj 2003 - 18:15 #9
det var efter tilretningen med hits=Clng(rs("hits")) +1

inden lød fejlen:
Microsoft VBScript runtime error '800a000d'

Type mismatch

/links/sejlerlinks_dk.asp, line 54
og linie 54 var:
hits = rs("hits") + 1
Avatar billede medions Nybegynder
02. maj 2003 - 18:41 #10
fjern ' og ' rundt om Request.querystring("id")

//>Rune
Avatar billede skipper4230 Nybegynder
02. maj 2003 - 21:14 #11
det blev det ikke meget bedre af...
[TCX][MyODBC]You have an error in your SQL syntax near 'WHERE ID = 1390' at line 1

links_dk.asp, line 57

linie 57 er:
DataConn.Execute newSQL
Avatar billede eagleeye Praktikant
03. maj 2003 - 11:38 #12
Prøv at udksrive din SQL sætning i stedet foir at udføre den og vis hvad den skriver eller selv tjekke om den ser rigtig ud:

Response.write newSQL
'DataConn.Execute newSQL
Avatar billede eagleeye Praktikant
03. maj 2003 - 11:41 #13
Umiddelbart kan MySQL da godt finde ud af hvis der er ' omkring kolonner som er feneret som tal, men eksvis Access er mere sart omkring det det. Eller for en sikkerheds skyld prøv med:

newSQL = "UPDATE links SET hits=" & hits & " WHERE ID = " & Request.querystring("id") & ";"
Avatar billede skipper4230 Nybegynder
03. maj 2003 - 15:09 #14
fremragende ;-D

Så kom jeg videre

Tak for hjælpen
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