webForumDet fria alternativet

You have an error in your SQL syntax

Databaser & SQL

19 svar · 1 074 visningar · startad av Jeppeweb

Medlem sedan sep. 2006462 inlägg
Frågan#1

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

[MySQL][ODBC 3.51 Driver][mysqld-5.0.45-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 '1 * FROM nyheter ORDER BY datum DESC' at line 1

/start.asp, line 21

<%
Set ObjRSNyhet = ObjConn.Execute("SELECT TOP 1 * FROM nyheter ORDER BY datum DESC")
%>

<%If ObjRSNyhet.eof then%>
<%Else%>
<div id="newstop">
<p><%=DatumFix(ObjRSNyhet("datum"))%> - <%=ObjRSNyhet("rubrik")%> // <%=ObjRSNyhet("skribent")%> - <a href="?visa=nyhetsarkiv">Visa alla</a></p>
</div>
<div id="startnews">
<p><%=makeTags(ObjRSNyhet("inlagg"))%></p>
<%End If%>
</div>

Vad är felet? :S

Min SQL Connection ser ut såhär;

<%

Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "Driver={MySQL ODBC 3.51 Driver}; server=#; uid=#; pwd=#; database=#; option=3"

%>

Medlem sedan juni 20008 205 inlägg
#2

TOP 1 finns inte i MySQL. Kolla manualen efter LIMIT som gör typ samma sak (och lite till).

Medlem sedan dec. 200012 464 inlägg
#3

Top fungerar inte i Mysql. Använd limit.

Flyttas från ASP

Medlem sedan sep. 2006462 inlägg
#4

Grymt snabbt svar.

Okej, så hur skulle den där koden se ut med LIMIT ?
Fick f.ö det här felmeddelandet nu när jag håller på att byta ut access databas mot MySQL.

En lite Offtopic fråga, är det mycket jobb att byta till MySQL när man har en sida som är byggd till Access från grunden?

Medlem sedan juli 20011 222 inlägg
#5
SELECT * FROM nyheter ORDER BY datum DESC LIMIT 1
Medlem sedan sep. 2006462 inlägg
#6

Tack.

Vad är det för fel på den här koden?

 <span style="float:left;"><%=GetAnv(ObjRS2("anvid"))%><font color="<%If ObjRS2("tema") = "0" then%>#000000<%ElseIf ObjRS2("tema") = "1" then%>#FFFFFF<%ElseIf ObjRS2("tema") = "2" then%>#FF0000<%Else%>#000000<%End If%>"> <%If (ObjRS3("kon")) = "0" then %>P<% Else %>F<% End If %><%=GetAge(ObjRS3("alder"))%></b> | <%=DatumFix(ObjRS2("datum"))%> <%If ObjRS2("hemligt") = true then%> | HEMLIGT<%End If%></span> </font>

Microsoft VBScript runtime error '800a000d'

Type mismatch

/gastbok.asp, line 313

Medlem sedan sep. 2006462 inlägg
#7

Tror felet ligger här.

<%
Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& CLng(Request.Querystring("userid")) &"")
Set ObjRSCount = ObjConn.Execute("SELECT Count(*) FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"'")
Set ObjRS2 = ObjConn.Execute("SELECT * FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"' Order By datum DESC")
%>

Tacksam för hjälp

Medlem sedan mars 20034 471 inlägg
#8

Plocka bort "grekiskan" (ASP:n alltså) och visa BARA SQL:n, tack!

Eller posta i ASP om felet inte är SQL-relaterat.

Medlem sedan sep. 2006462 inlägg
#9
<%

' Deklarera variablerna
Dim objConnection
Dim objRS2
Dim strSQL
Dim lngPage
Dim objRS
Dim ObjRSCount
Dim ObjRS3, ObjRSUser

' Skapa ett Pager-objekt
Set objRS2 = New Pager

' Sätt sidstorlek
objRS2.PageSize = 10

' Sätt aktuell sida
objRS2.Page = Request.QueryString("page")

' Skapa en databaskoppling
Set objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open = "driver={MySQL ODBC 3.51 Driver}; server=#; uid=#; pwd=#; database=#;"

' Hämta datat till Pager-objektet
strSQL = "SELECT * FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"' Order By datum DESC"
objRS2.Open strSQL, objConnection

' Stäng databaskopplingen
objConnection.Close
Set objConnection = Nothing

%>

<% Do until ObjRS2.eof%>

<%
session("tillgb") = ObjRS2("anvid")
%>

<%
Set ObjRS3 = ObjConn.Execute("SELECT * FROM medlemmar where id="& ObjRS2("anvid") &"")
%>

<%If ObjRS3.eof then%>
Medlem sedan sep. 2006462 inlägg
#10

Allt fungerade innan jag bytte databas från Access till MySQL

Medlem sedan sep. 2006462 inlägg
#11

Snälla, hjälp! :P

Medlem sedan dec. 20025 483 inlägg
#12

Vilken är rad 313?

Medlem sedan sep. 2006462 inlägg
#13

det är

		 <span style="float:left;"><%=GetAnv(ObjRS2("anvid"))%><font color="<%If ObjRS2("tema") = "0" then%>#000000<%ElseIf ObjRS2("tema") = "1" then%>#FFFFFF<%ElseIf ObjRS2("tema") = "2" then%>#FF0000<%Else%>#000000<%End If%>"> <%If (ObjRS3("kon")) = "0" then %>P<% Else %>F<% End If %><%=GetAge(ObjRS3("alder"))%></b> | <%=DatumFix(ObjRS2("datum"))%> <%If ObjRS2("hemligt") = true then%> | HEMLIGT<%End If%></span> </font>

TACKSAM FÖR HJÄLP!

Medlem sedan dec. 200012 464 inlägg
#14

Kan du inte lägga in lite radbrytningar så att koden går att läsa. Då får du även bättre lokalitet i felmeddelandet.

Medlem sedan sep. 2006462 inlägg
#15

Okej. Men tar jag bort den där kodsnutten försvinner inte problemet, så det är nog inte bara där felet ligger. Jag tror den ligger här någonstans;

<%
Option Explicit
Response.Buffer = True
Response.Expires = -1
%>
<!--#include file="Pager.asp"-->
<!--#Include File="includes/datum.asp"-->
<!--#Include File="includes/sqldb.asp"-->
<!--#Include File="functions.asp"-->

<%
If not session("inloggad") = "ja" Then
Response.Redirect "?visa=start"
End If
%>

<%
If Request.Querystring("do") = "radera" Then
				
		ObjConn.Execute("DELETE * FROM gastbok where id="& CLng(Request.Querystring("id")) &"")
				
			Response.Redirect(Request.ServerVariables("HTTP_REFERER"))			
				
					
End If
%>

<%
If Request.Querystring("do") = "radera_alla" Then
				
		ObjConn.Execute("DELETE * FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"'")
				
			Response.Redirect(Request.ServerVariables("HTTP_REFERER"))			
				
					
End If
%>

<%
Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& CLng(Request.Querystring("userid")) &"")
Set ObjRSCount = ObjConn.Execute("SELECT Count(*) FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"'")
Set ObjRS2 = ObjConn.Execute("SELECT * FROM gastbok where till='"& CLng(Request.Querystring("userid")) &"' Order By datum DESC")
%>

<%If ObjRS.Eof Then 
Response.Redirect "?visa=start" 
%>

<% Else %>

<%If Session("id") = ObjRS("id") Then%>
<%
ObjConn.Execute("UPDATE gastbok set last='1' where till='"& ObjRS("id") &"'")
%>
<%End If%>

<%If Session("id") = ObjRS("id") Then%>
<%
ObjConn.Execute("UPDATE medlemmar set online_tid='"&now&"', online_act='Läser sin gästbok' where anvnamn='"& session("anvnamn") &"'")
%>
<%Else%>
<%
ObjConn.Execute("UPDATE medlemmar set online_tid='"&now&"', online_act='Kollar in "& ObjRS("anvnamn") &"s gästbok' where anvnamn='"& session("anvnamn") &"'")
%>
<%End If%>

<div id="container">

<div id="content_rub">
<%=ucase(ObjRS("anvnamn"))%>&nbsp;<%If (ObjRS("kon")) = "0" then %>P<% Else %>F<% End If %><%=GetAge(ObjRS("alder"))%> - <%If (ObjRS("rank")) = "1" Then%>(ADMIN)<%Elseif ObjRS("id") = "132" then%>(FHüRER)<%Elseif (ObjRS("rank")) = "2" Then%>(MODERATOR)<%Elseif (ObjRS("rank")) = "3" Then%>(SPECIAL)<%Else%>(MEDLEM)<%End If%> - 

<%

	If Len(ObjRS("icq") & "") > 0 then
	
			Response.Write ""&Server.HtmlEncode(ucase(ObjRS("icq")))&""
			
	Else
	
			Response.Write "INGENSTANS"
	
	End if

%>

Have in mind att problemet kom efter att jag böt databas, kanske är det någon kodsnutt som inte vill sig fungera i MySQL men som fungerade i Access?

Medlem sedan juni 200032 967 inlägg
#16

Börja med att göra som LarsG säger - lägg in radbrytningar i den långa fula kodrad felmeddelandet pekar på. Då får du veta vilken av asp-kluttarna felet ligger i - dvs vilka typer som mischmaschar. Lös det felet först, innan du börjar gissa att det ligger fel någon annanstans också...

Medlem sedan sep. 2006462 inlägg
#17

Okej.

		 <span style="float:left;"><%=GetAnv(ObjRS2("anvid"))%><font color="<%If ObjRS2("tema") = "0" then%>#000000
		 <%ElseIf ObjRS2("tema") = "1" then%>#FFFFFF<%ElseIf ObjRS2("tema") = "2" then%>#FF0000
		 <%Else%>
         #000000<%End If%>"> 
		 <%If (ObjRS3("kon")) = "0" then %>
         <p>P</p>
  		 <% Else %>
         <p>F</p>
		 <% End If %>
		 <%=GetAge(ObjRS3("alder"))%></b>
          | <%=DatumFix(ObjRS2("datum"))%> 
		 <%If ObjRS2("hemligt") = true then%>
         <p>| HEMLIGT</p>
		 <%End If%></span> </font>

felmeddelande:

jeppe
P

33 | Idag @ 20:57
Microsoft VBScript runtime error '800a000d'

Type mismatch

/gastbok.asp, line 323

Rad 323:

		 <%If ObjRS2("hemligt") = true then%>
Medlem sedan sep. 2006462 inlägg
#18

Please, someone? Ingen som har en aning om vad som kan vara fel?
Tacktack

Medlem sedan juni 200032 967 inlägg
#19

Vad är det för datatyp på fältet? Om det är något som kan göras om till en boolean så får du subtypskonvertera för att göra en dylik jämförelse.

<%If cbool(ObjRS2("hemligt")) = true then%>
Medlem sedan sep. 2006462 inlägg
#20

Datatyp i fältet var Tinyint, ändrade till INT och nu verkar det ha löst sig..!

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)