webForumDet fria alternativet

Syntaxfel

16 svar · 500 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 182 inlägg
#1

Nån som kan se syntaxfelet i SQL1 = "INSERT INTO tblUsers_skrivklada_checkRostning where userID=" & request("userID")

UlfTMedlem sedan maj 20016 050 inlägg
#2

Du borde använda update i det fallet, eftersom du vill uppdatera en rad som redan finns. Insert används bara när man vill lägga till nya rader. Dessutom borde du ange vilka kolumner som ska uppdateras, och vilka värden de ska uppdateras med.

cyprysMedlem sedan dec. 20003 105 inlägg
#3

Hittar inte ett enda rätt ;)
Vad vill du göra egentligen?
Antingen vill du uppdatera ett värde där userID = ditt_ID
eller vill du sätta in ett nytt värde userID?

' skapar ny post
INSERT INTO tbl (col1, col2) VALUES('value1', numericvalue2)

' uppdaterar
UPDATE tbl SET col1 = 'värde', col2 = numVärde WHERE userID = ditt_ID
WebbisNetMedlem sedan feb. 20032 182 inlägg
#4

var visst inte riktigt klar med frågan, jag har en updatesats för rösningen, men med koden vill jag även spara data i en annan tabell så att ingen kan rösta 2 gånger på samma, och i den här måste jag ha insert för att få en lista på ALLA som har röstat

jag har nu

SQL = "update tblUsers_skrivklada set rostvarde=rostvarde+"& varRoster &", antal=antal+1 where userID=" & request("userID")

	SQL1 = "INSERT INTO tblUsers_skrivklada_checkRostning"
	SQL1 = SQL1 & "(userID,IP,From) "
	SQL1 = SQL1 & "VALUES('"& varUserID &"','"& IP &"','"& varFrom &"')"
UlfTMedlem sedan maj 20016 050 inlägg
#5

Där har du närmat dig en fungerande lösning. Men tänk efter nu vilka datatyper du har. Är verkligen userID ett strängvärde? Det förefaller mig mer sannolikt att det är ett heltal. Då ska du inte ha apostrofer runt värdet.

WebbisNetMedlem sedan feb. 20032 182 inlägg
#6

det är fortfarande syntaxfel

UlfTMedlem sedan maj 20016 050 inlägg
#7

Och hur ser din sql-sats ut?

WebbisNetMedlem sedan feb. 20032 182 inlägg
#8
SQL1 = "INSERT INTO tblUsers_skrivklada_checkRostning"
	SQL1 = SQL1 & "(userID,IP,From) "
	SQL1 = SQL1 & "VALUES("& varUserID &",'"& IP &"',"& varFrom &")"
	
	SQL = "update tblUsers_skrivklada set rostvarde=rostvarde+"& varRoster &", antal=antal+1 where userID=" & request("userID")
UlfTMedlem sedan maj 20016 050 inlägg
#9

Det ser ju riktigt ut, förutsatt att kolumnen "From" är numerisk. Har du någon form av kommandorad där du kan köra sql-satserna, och få databashanteraren att tala om var syntaxfelet är? I Oracle finns tex Sql+, som jag ofta har använt mig av för att undersöka syntaxfel. Även MySQL har jag för mig ska gå att köra från kommandoraden.

UlfTMedlem sedan maj 20016 050 inlägg
#10

Nu ser jag något som jag är osäker på om det beror på skärmen eller något annat. Eventuellt saknar du ett mellanslag i insert-satsen. Frågan är om du har ett mellanslag här: SQL1 = SQL1 & "(userID,IP,From) "
eller om det står SQL1 = SQL1 & " (userID,IP,From) "
Det är den andra varianten som är rätt. Med den första varianten får du följande sql-sats:

INSERT INTO tblUsers_skrivklada_checkRostning(userID,IP,From) VALUES(varUserID,'IP',varFrom)

Då har du fått fel tabellnamn.

WebbisNetMedlem sedan feb. 20032 182 inlägg
#11

SQL1 = SQL1 & " (userID,IP,From) " gör ingen skillnad och jag kör med access som databas

Vid utskrift får jag

INSERT INTO INSERT INTO tblUsers_skrivklada_checkRostning (userID,IP,From) VALUES(15,'10.9.0.2',1)update tblUsers_skrivklada set rostvarde=rostvarde+5, antal=antal+1 where userID=15

, här ser allt rätt ut, men ändå får jag syntaxfel när jag ska köra SQL1

cyprysMedlem sedan dec. 20003 105 inlägg
#12

Du måste dela upp dina sql-satser och dessutom får du självklart inte skriva INSERT INTO två ggr efter varandra.

Ungefär såhär vore mer rätt

SQL = "INSERT INTO tblUsers_skrivklada_checkRostning (userID,IP,From) VALUES(15,'10.9.0.2',1)"
conn.execute SQL

SQL = "update tblUsers_skrivklada set rostvarde=rostvarde+5, antal=antal+1 where userID=15"
conn.execute SQL
WebbisNetMedlem sedan feb. 20032 182 inlägg
#13

2 insert into var vara skrivfel eftersom jag inte hade det, och

SQL1 = "INSERT INTO tblUsers_skrivklada_checkRostning"
	SQL1 = SQL1 & " (userID,IP,From) "
	SQL1 = SQL1 & "VALUES("& varUserID &",'"& IP &"',"& varFrom &")"
	response.write SQL1
	objConn.Execute(SQL1)
	
	SQL = "update tblUsers_skrivklada set rostvarde=rostvarde+"& varRoster &", antal=antal+1 where userID=" & request("userID")
	response.write SQL
	objConn.Execute(SQL)

fungerar ändå inte,samma syntaxfel

PDahlenMedlem sedan apr. 2004784 inlägg
#14

Exakt vad är felmeddelandet du får?

Ta bort mellanslaget mellan tabellnamnet och ( så att det blir: "...INTO tblUsers_skrivklada_checkRostning(userID..."

Kan ett tabellnamn vara så långt?

yohpopsMedlem sedan feb. 20011 102 inlägg
#15

Kan det vara så att databasen blir förvirrad av fältnamnet FROM?
Testa att sätta [] runt det.

WebbisNetMedlem sedan feb. 20032 182 inlägg
#16

Hjälpte inte det heller

@ndersMedlem sedan juni 200026 914 inlägg
#17

yohpops skrev:

Kan det vara så att databasen blir förvirrad av fältnamnet FROM?
Testa att sätta [] runt det.

Så är det. Man skall inte överhuvudtaget använda reserverade ord som tabell- eller fältnamn. Byt namn på fältet.

Skriv ut hur SQL-frågan ser ut nu, samt aktuellt felmeddelande.

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