webForumDet fria alternativet

Syntaxfel

Databaser & SQLur Databashanterare & SQL

16 svar · 500 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

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

Medlem sedan maj 20018 027 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.

Medlem sedan dec. 20003 563 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
Medlem sedan feb. 20032 027 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 &"')"
Medlem sedan maj 20018 027 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.

Medlem sedan feb. 20032 027 inlägg
#6

det är fortfarande syntaxfel

Medlem sedan maj 20018 027 inlägg
#7

Och hur ser din sql-sats ut?

Medlem sedan feb. 20032 027 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")
Medlem sedan maj 20018 027 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.

Medlem sedan maj 20018 027 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.

Medlem sedan feb. 20032 027 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

Medlem sedan dec. 20003 563 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
Medlem sedan feb. 20032 027 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

Medlem sedan apr. 2004778 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?

Medlem sedan feb. 20011 198 inlägg
#15

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

Medlem sedan feb. 20032 027 inlägg
#16

Hjälpte inte det heller

Medlem sedan juni 200032 967 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.

136 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)