webForumDet fria alternativet
Logga in / Bli medlem

Syntax error in INSERT INTO statement.

ASP

18 svar · 692 visningar · startad av DanneSt

Medlem sedan feb. 20041 311 inlägg
Trådstart#1

Hej!
Jag är relativt ny på ASP-kodning, har mest klippt och klistrat från färdiga gratisscript. Nu håller jag på med mitt första försök till eget script.

Jag får ett felmeddelande:
Syntax error in INSERT INTO statement.

, som pekar mot den sista raden i koden;

sql = "INSERT INTO Prod, Intressant (ProdNamn, ProdBesk, IntNamn, IntKontakt) VALUES('" & Request.Form("ProdNamn") & ", " & Request.Form("ProdBesk") & " , " & Request.Form("IntNamn") & " , " & Request.Form("IntKontakt") & "')"
		
Conn.Execute(sql)

Vad gör jag för fel?
Går det inte att stoppa in data i två tabeller samtidigt?
Försöker jag skriva ut innehållet i 'sql' precis innan Conn.Execute(sql) så skriver den bara ut bokstäverna s, q, & l...
Har jag ingen data med mig?

Tacksam för hjälp!

Medlem sedan dec. 20025 483 inlägg
#2

Hej och välkommen till wF!

Det saknas en apostrof:

'" & Request.Form("ProdNamn") & "[b]'[/b] <---

Red./ Samt en för mycket:

" & Request.Form("IntKontakt") & "' <---
Medlem sedan juni 200032 967 inlägg
#3
  1. Nej, stoppa in data i en tabell i taget.
  2. För att skriva ut SQL-frågan, ska du inte ha citationstecken runt sql.
Medlem sedan feb. 20041 311 inlägg
#4

Hmm, varför ska det vara apostrofer runt första värdet, och inte de övriga?
Nåja, testar...

Nop, funkar inte.

Medlem sedan dec. 20025 483 inlägg
#5

Du skall inte ha apostrofer kring exempelvis tal. Däremot skall du ha dem runt strängar. Läs dessutom Anders punkter.

Medlem sedan feb. 20041 311 inlägg
#6

Ok, då förstår jag apostrofregeln!

Får inte till det ändå.
Har gjort som @nders sa (tror jag!);

sql1 = "INSERT INTO Prod (ProdNamn, ProdBesk) VALUES('" & Request.Form("ProdNamn") & ", " & Request.Form("ProdBesk") & "')"
Conn.Execute(sql1)
Conn.close
	
sql2 = "INSERT INTO Intressant (IntNamn, IntKontakt) VALUES('" & Request.Form("IntNamn") & " , " & Request.Form("IntKontakt") & "')"
Conn.Execute(sql2)
Conn.close

Tack förresten för välkomnandet! :-)

Medlem sedan juni 200032 967 inlägg
#7

Vad är det som inte fungerar nu då? :)
Felmeddelande?

Ett fel kan vara att du stänger conn-objektet innan du är klar med det. Gör inte det. ;)

mvh

Medlem sedan dec. 20025 483 inlägg
#8

Apostroferna är fortfarande intet riktigt placerade:

Conn.Execute("INSERT INTO Prod (ProdNamn, ProdBesk) VALUES('" & Request.Form("ProdNamn") & "', '" & Request.Form("ProdBesk") & "'")
	
Conn.Execute("INSERT INTO Intressant (IntNamn, IntKontakt) VALUES(" & Request.Form("IntNamn") & " , " & Request.Form("IntKontakt"))
Conn.close

Och innan Erik Juhlin läser detta vill jag tipsa dig om att söka på SQL-injection här på wF ;)

Medlem sedan feb. 20041 311 inlägg
#9

Oj, glömde felet:

Microsoft JET Database Engine error '80040e14'

Number of query values and destination fields are not the same.

Provade att skriva ut värden innan Execute och de stämmer;

INSERT INTO Prod (ProdNamn, ProdBesk) VALUES('cykel, blabla')INSERT INTO Person (IntNamn, IntKontakt) VALUES('danne , 123456')

Ska apostroferna alltså sitta runt VARJE värde, inte bara inom parantesen?

Medlem sedan dec. 200012 464 inlägg
#10

Ska apostroferna alltså sitta runt VARJE värde, inte bara inom parantesen?

Just det.

Medlem sedan feb. 20041 311 inlägg
#11

Nu funkar det!!
Tusen tack PeterS & @nders för Er hjälp!

:-D

:birp

Och tack till dig också, Lars! :-)

Medlem sedan dec. 20025 483 inlägg
#12

:bire

Kanon!

Medlem sedan juni 200032 967 inlägg
#13

:bire

Medlem sedan feb. 20041 311 inlägg
#14

Ännu ett syntax error

Har återigen ett problem med detta. Får samma syntas error som tidigare (Syntax error in INSERT INTO statement.).

Conn.Execute("INSERT INTO fastigheter (namn,info,yta,hyra,kommentar,ledig) VALUES ('" & Request.Form("namn") & "','" & Request.Form("info") & "','" & Request.Form("yta") & "','" & Request.Form("hyra") & "','" & Request.Form("kommentar") & "','" & Request.Form("ledig") & "'")

Tycker mig ha fått dit alla apostrofer och snuffar på rätt ställe...
Vad gör jag för fel denna gång?

Medlem sedan juni 200032 967 inlägg
#15

Regel ett när man har problem med SQL-frågor: skriv ut den färdiga SQL-frågan. Att se hur en fråga ser ut innan den har några värden är ointressant.

strSQL = "INSERT INTO blablabla..."
Response.write strSQL
Medlem sedan feb. 20041 311 inlägg
#16

Hmm, är inte riktigt säker på vad du menar med "färdig SQL-fråga".
(Är novis på ASP, men en riktigt newbie på SQL!!!)

Har struntat i det första försöket och lyckades lösa mitt problem så här:

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From fastigheter"
Recset.Open Addera, Conn, 3, 3

RecSet.AddNew

RecSet("namn") = Request.Form("namn")
RecSet("info") = Request.Form("info")
RecSet("yta") = Request.Form("yta")
RecSet("hyra") = Request.Form("hyra")
RecSet("kommentar") = Request.Form("kommentar")
RecSet("ledig") = Request.Form("ledig")

RecSet.Update
RecSet.Close

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From bilder"
Recset.Open Addera, Conn, 3, 3

RecSet.AddNew

RecSet("lgh") = Request.Form("namn")

RecSet.Update
RecSet.Close
Conn.Close

(Var det detta de menade med en "färdig SQL-fråga? Och då är väl denna fråga ställd i fel forum också??) :l

Medlem sedan juni 200032 967 inlägg
#17

Den färdiga SQL-frågan är den som skickas till databasen, dvs efter det att alla asp-strängar är tolkade.

Titta några inlägg upp, så ser du vad du tidigare gjort.

Medlem sedan feb. 20041 311 inlägg
#18

Ok, ska kolla igenom det senare (just nu snurrar det bara...) :r

Hoppar därför till en annan fråga:
Vid ett tillfälle lägger jag upp en ny post (lägenhet).
Vid ett annat tillfälle lägger jag till en bild till den lägenheten.
I tabellen har jag då en kolumn som är tom om ingen bild finns, annars ifylld med bildens namn om det finns en bild.

Koden är skriven skriven så att den fyller på (AddNew) med en ny rad med lägenhetsnamnet och bildnamnet. Problemet jag är att jag då får en rad (den första) där bildnamnet är tomt.

Hur skriver jag en vettig kod för att få den att uppdatera den rad som inte har något bildnamn när jag laddar upp den första bilden, och att sen göra som vanligt?

Medlem sedan juni 200032 967 inlägg
#19

Kontrollera om det finns en post där bild är tomt. (är tomt tom sträng eller null förresten?) Om så, gör update, annars, gör insert.

strSQL = "SELECT 1 FROM tabell WHERE lägenhet = 'blablabla' AND bildfält=''"
set objRS = objConn.execute (strSQL)
if not objRS.EOF then
    strSQL = "UPDATE tabell SET bildfält = 'blabla.jpg' WHERE lägenhet='blabla'"
else
    strSQL = "INSERT INTO tabell...."
end if
' exekvera sql-fråga...

typ, alltså.

382 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
122 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)