Hej och välkommen till wF!
Det saknas en apostrof:
'" & Request.Form("ProdNamn") & "[b]'[/b] <---
Red./ Samt en för mycket:
" & Request.Form("IntKontakt") & "' <---
18 svar · 692 visningar · startad av DanneSt
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!
Hej och välkommen till wF!
Det saknas en apostrof:
'" & Request.Form("ProdNamn") & "[b]'[/b] <---
Red./ Samt en för mycket:
" & Request.Form("IntKontakt") & "' <---
Hmm, varför ska det vara apostrofer runt första värdet, och inte de övriga?
Nåja, testar...
Nop, funkar inte.
Du skall inte ha apostrofer kring exempelvis tal. Däremot skall du ha dem runt strängar. Läs dessutom Anders punkter.
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! :-)
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
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
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?
Ä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?
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
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å??)
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.
Ok, ska kolla igenom det senare (just nu snurrar det bara...)
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?
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å.