webForumDet fria alternativet

Konstigt fel, verkligen!

ASP

14 svar · 507 visningar · startad av webbSAJTEN

Medlem sedan jan. 2002992 inlägg
Frågan#1

Förlåt för min rubrik, men jag vet inte vad som är felet..

Har fixat en röstninsgrejj på min sida..

<a href="blogga_las.asp?UserID=<%=request.querystring("UserID")%>&do=rosta&ID=<%=request.QueryString("ID")%>&rost=1">1</a>

Detta är en utav länkarna..

if intRost = "1" then
	sql = "UPDATE blogg SET int1 = int1 + 1 WHERE B_ID = " & ID & ""
	Connect.Execute(sql),,128
end if

if intRost = "2" then
	sql = "UPDATE blogg SET int2 = int2 + 1 WHERE B_ID = " & ID & ""
	Connect.Execute(sql),,128
end if

if intRost = "3" then
	sql = "UPDATE blogg SET int3 = int3 + 1 WHERE B_ID = " & ID & ""
	Connect.Execute(sql),,128
end if

if intRost = "4" then
	sql = "UPDATE blogg SET int4 = int4 + 1 WHERE B_ID = " & ID & ""
	Connect.Execute(sql),,128
end if

if intRost = "5" then
	sql = "UPDATE blogg SET int5 = int5 + 1 WHERE B_ID = " & ID & ""
	Connect.Execute(sql),,128
end if

Detta är vad som händer....

Vet att jag kan köra me elseif, men de blev fel då me jag testade såhär me samma resultat..

Felet blir:

ADODB.Connection.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [TCX][MyODBC]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 'int1 = int1 + 1 WHERE B_ID = 29' at line 1

Men det funkar kanonbra om man klickar på länken om man ska rösta en "5".. Men 1, 2, 3, 4 funkar inte..

kan någon hjälpa mig?

Medlem sedan aug. 2002106 inlägg
#2

Och databasen är korrekt, dvs samma datatyper för alla fälten?

Medlem sedan jan. 2002992 inlägg
#3

Jora, alla är av typen INT

Medlem sedan jan. 2000978 inlägg
#4

Vad har fälten int1, int2, int3 och int4 för värden nu, för den B_ID som du testar med? Dom borde ju ha '0' som default. Inte NULL.

Medlem sedan jan. 2002992 inlägg
#5

Alla har standard 0, inte NULL..

Medlem sedan jan. 2000978 inlägg
#6

Skriv ut SQL-satsen som genereras.

Medlem sedan jan. 2002992 inlägg
#7

Tyvärr...

FÅr inte ut den )=..
Den hoppar bara över den UPDATE..

Medlem sedan juni 200032 967 inlägg
#8

Om du får ut ett felmeddelande när SQL-frågan ska exekveras så måste du ju kunna få ut en utskrift av SQL-frågan. Kör en response.end direkt efter utskriften.

Det verkar dock som att du har något annat problem. Prövat att byta namn på fälten? Kontrollerat att fältinnehållet verkligen inte är null?

Medlem sedan jan. 2002992 inlägg
#9
if intRost = "1" then
strSQL = "UPDATE blogg Set int1 = int1 + 1 Where B_ID = "& ID &""
response.write (SQL)
response.end 
'Connect.Execute(strSQL),,128
end if

Men den skrev ut SELECT satsen som ligger högre upp :(

Medlem sedan jan. 2002992 inlägg
#10

Sådär, nu fick jag ut Update..

UPDATE blogg Set int1 = int1 + 1 Where B_ID = 29

sådär blev de..

Medlem sedan juni 200032 967 inlägg
#11

Notera min redigering ovan.

Medlem sedan jan. 2002992 inlägg
#12

Jag döpte om alla int till rosta..
Nu funkar allt kanon..

Du är underbar @nders :D

Medlem sedan juni 200032 967 inlägg
#13

INT1, INT2, INT3 och INT4 är någon sorts reserverade ord i MySQL, då de verkar vara någon sorts synonymer till tinyint, smallint, mediumint och int.

Medlem sedan jan. 2002992 inlägg
#14

Aha okej :)
Förstod att dom måste varit reserverade..
Tycker de borde stått i felmesset..

Medlem sedan juni 200032 967 inlägg
#15

webbSAJTEN skrev:

Tycker de borde stått i felmesset..

Det gör det sällan. Oftast står det bara att du har ett syntaxfel, så då bör man direkt kolla av sina fältnamn om man inte hittar andra fel. En sökning på mysql.com brukar kunna sprida ljus över eländet.

278 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
147 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)