webForumDet fria alternativet

You have an error in your SQL syntax

19 svar · 1 074 visningar · startad av Jeppeweb

JeppewebMedlem sedan sep. 2006512 inlägg
#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"

%>

spangoMedlem sedan juni 20006 147 inlägg
#2

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

LarsGMedlem sedan dec. 200012 465 inlägg
#3

Top fungerar inte i Mysql. Använd limit.

Flyttas från ASP

JeppewebMedlem sedan sep. 2006512 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?

visslarenMedlem sedan juli 2001770 inlägg
#5
SELECT * FROM nyheter ORDER BY datum DESC LIMIT 1
JeppewebMedlem sedan sep. 2006512 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

JeppewebMedlem sedan sep. 2006512 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

aasahMedlem sedan mars 20033 451 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.

JeppewebMedlem sedan sep. 2006512 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%>
JeppewebMedlem sedan sep. 2006512 inlägg
#10

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

JeppewebMedlem sedan sep. 2006512 inlägg
#11

Snälla, hjälp! :P

Peter SMedlem sedan dec. 20025 484 inlägg
#12

Vilken är rad 313?

JeppewebMedlem sedan sep. 2006512 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!

LarsGMedlem sedan dec. 200012 465 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.

JeppewebMedlem sedan sep. 2006512 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?

@ndersMedlem sedan juni 200026 914 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å...

JeppewebMedlem sedan sep. 2006512 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%>
JeppewebMedlem sedan sep. 2006512 inlägg
#18

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

@ndersMedlem sedan juni 200026 914 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%>
JeppewebMedlem sedan sep. 2006512 inlägg
#20

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

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb