---
title: "fråga ang låååång insert sql-sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/169408-fråga-ang-låååång-insert-sql-sats"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "rollo"
published: "2008-02-27T15:08:04.000Z"
updated: "2008-02-29T01:57:09.000Z"
replies: 13
views: 813
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/169408-fråga-ang-låååång-insert-sql-sats"
---

# fråga ang låååång insert sql-sats

## #1 — rollo, 2008-02-27T15:08Z

Tjena!

Jag har en insert sql-sats som är väldigt lång.

När jag gör min insert så görs ingenting

```
		SQLStmt ="INSERT INTO db_h"
		SQLStmt = SQLStmt & "(thumb,falt01,falt02,falt03,falt04, text01, text02, text03, text04, text05, text06,bild1, fil1, fil2, a_id, p_id, datum, vem,lang, prod_id,row1_1, row1_2, row1_3, row2_1, row2_2, row2_3, row3_1, row3_2, row3_3, row4_1, row4_2, row4_3, row5_1, row5_2, row5_3, row6_1, row6_2, row6_3, row7_1, row7_2, row7_3, row8_1, row8_2 ,row8_3 ,row9_1 row9_2, row9_3, row10_1, row10_2, row10_3, row11_1, row11_2, row11_3, row12_1, row12_2, row12_3, header1_1, header1_2, header1_3) "
		SQLStmt = SQLStmt & "VALUES('" & tmp_thumb & "','" & upload.Form("falt01") & "','" & upload.Form("falt02") & "','" & upload.Form("falt03") & "','" & upload.Form("falt04") & "', '" & upload.Form("text01") & "', '" & upload.Form("text02") & "', '" & upload.Form("text03") & "', '" & upload.Form("text04") & "', '" & upload.Form("text05") & "', '" & upload.Form("text06") & "', '" & tmp_namn1 & "', '" & tmp_namn2 & "', '" & tmp_namn3 & "', '" & a_id & "', '" & prod_id & "', '" & datum & "', '" & tmp_who & "', '" & tmp_lang & "', '" & tmp_prodid & "'," & upload.Form("row1_1") & "', '" & upload.Form("row1_2") & "', '" & upload.Form("row1_3") & "', '" & upload.Form("row2_1") & "', '" & upload.Form("row2_2") & "', '" & upload.Form("row2_3") & "', '" & upload.Form("row3_1") & "', '" & upload.Form("row3_2") & "', '" & upload.Form("row3_3") & "', '" & upload.Form("row4_1") & "', '" & upload.Form("row4_2") & "', '" & upload.Form("row4_3") & "', '" & upload.Form("row5_1") & "',' " & upload.Form("row5_2") & "', '" & upload.Form("row5_3") & "', '" & upload.Form("row6_1") & "', '" & upload.Form("row6_2") & "', '" & upload.Form("row6_3") & "', '" & upload.Form("row7_1") & "', '" & upload.Form("row7_2") & "', '" & upload.Form("row7_3") & "', '" & upload.Form("row8_1") & "', '" & upload.Form("row8_2") & "', '" & upload.Form("row8_3") & "', '" & upload.Form("row9_1") & "', '" & upload.Form("row9_2") & "', '" & upload.Form("row9_3") & "', '" & upload.Form("row10_1") & "', '" & upload.Form("row10_2") & "', '" & upload.Form("row10_3") & "', '" & upload.Form("row11_1") & "', '" & upload.Form("row11_2") & "', '" & upload.Form("row11_3") & "', '" & upload.Form("row12_1") & "', '" & upload.Form("row12_2") & "', '" & upload.Form("row12_3")& "', '" & upload.Form("header1_1")& "', '" & upload.Form("header1_2")& "', '" & upload.Form("header1_3")& "') "
```

Funkar det inte att ha så långa stränga på ASP sidor eller gör jag fel?
Kan jag slå ihop dem och få dem kortare?

Tack på förhand!

rollo

Permalänk: https://www.webforum.nu/p/169408

## #2 — Zaiman, 2008-02-27T15:13Z

Och om du gör en response.write på din SQLStmt ser det korrekt ut? 
Får du något felmeddelande?

Permalänk: https://www.webforum.nu/p/2085250

## #3 — rollo, 2008-02-27T15:32Z

Gör jag en utskrift av SQLStmt så ser den helt rätt ut.
Hade lite fel i den först som den krashade på grund av, men nu får jag bara en vit sida och inga felmeddelade.

rollo

Permalänk: https://www.webforum.nu/p/2085252

## #4 — @nders, 2008-02-27T15:52Z

... och du har inte glömt att exekvera SQL-frågan?

Permalänk: https://www.webforum.nu/p/2085254

## #5 — asp, 2008-02-27T16:16Z

Din vita sida - har du testat att öppna källkoden och se vad den innehåller?

Ibland hamnar felmeddelanden dolda i källkoden pga html-koden förstörs...

Permalänk: https://www.webforum.nu/p/2085261

## #6 — rollo, 2008-02-27T19:33Z

tjena!

kör jag en print på SQLStmt får jag följande

```
INSERT INTO db_h(thumb,falt01,falt02,falt03,falt04, text01, text02, text03, text04, text05, text06,bild1, fil1, fil2, a_id, p_id, datum, vem,lang, prod_id,row1_1, row1_2, row1_3, row2_1, row2_2, row2_3, row3_1, row3_2, row3_3, row4_1, row4_2, row4_3, row5_1, row5_2, row5_3, row6_1, row6_2, row6_3, row7_1, row7_2, row7_3, row8_1, row8_2 ,row8_3 ,row9_1 row9_2, row9_3, row10_1, row10_2, row10_3, row11_1, row11_2, row11_3, row12_1, row12_2, row12_3, header1_1, header1_2, header1_3) VALUES('','tomas','','','', '1', '2', '12', '4', '54', '854', '', '', '', '151', '151', '2008-02-27', 'Tomas Rylander', '1', '99',1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13',' 14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', 'header 1', 'header 2', 'header 3')
```

 

och koden ser ut så här

```
		SQLStmt ="INSERT INTO db_h"
		SQLStmt = SQLStmt & "(thumb,falt01,falt02,falt03,falt04, text01, text02, text03, text04, text05, text06,bild1, fil1, fil2, a_id, p_id, datum, vem,lang, prod_id,row1_1, row1_2, row1_3, row2_1, row2_2, row2_3, row3_1, row3_2, row3_3, row4_1, row4_2, row4_3, row5_1, row5_2, row5_3, row6_1, row6_2, row6_3, row7_1, row7_2, row7_3, row8_1, row8_2 ,row8_3 ,row9_1 row9_2, row9_3, row10_1, row10_2, row10_3, row11_1, row11_2, row11_3, row12_1, row12_2, row12_3, header1_1, header1_2, header1_3) "
		SQLStmt = SQLStmt & "VALUES('" & tmp_thumb & "','" & upload.Form("falt01") & "','" & upload.Form("falt02") & "','" & upload.Form("falt03") & "','" & upload.Form("falt04") & "', '" & upload.Form("text01") & "', '" & upload.Form("text02") & "', '" & upload.Form("text03") & "', '" & upload.Form("text04") & "', '" & upload.Form("text05") & "', '" & upload.Form("text06") & "', '" & tmp_namn1 & "', '" & tmp_namn2 & "', '" & tmp_namn3 & "', '" & a_id & "', '" & prod_id & "', '" & datum & "', '" & tmp_who & "', '" & tmp_lang & "', '" & tmp_prodid & "'," & upload.Form("row1_1") & "', '" & upload.Form("row1_2") & "', '" & upload.Form("row1_3") & "', '" & upload.Form("row2_1") & "', '" & upload.Form("row2_2") & "', '" & upload.Form("row2_3") & "', '" & upload.Form("row3_1") & "', '" & upload.Form("row3_2") & "', '" & upload.Form("row3_3") & "', '" & upload.Form("row4_1") & "', '" & upload.Form("row4_2") & "', '" & upload.Form("row4_3") & "', '" & upload.Form("row5_1") & "',' " & upload.Form("row5_2") & "', '" & upload.Form("row5_3") & "', '" & upload.Form("row6_1") & "', '" & upload.Form("row6_2") & "', '" & upload.Form("row6_3") & "', '" & upload.Form("row7_1") & "', '" & upload.Form("row7_2") & "', '" & upload.Form("row7_3") & "', '" & upload.Form("row8_1") & "', '" & upload.Form("row8_2") & "', '" & upload.Form("row8_3") & "', '" & upload.Form("row9_1") & "', '" & upload.Form("row9_2") & "', '" & upload.Form("row9_3") & "', '" & upload.Form("row10_1") & "', '" & upload.Form("row10_2") & "', '" & upload.Form("row10_3") & "', '" & upload.Form("row11_1") & "', '" & upload.Form("row11_2") & "', '" & upload.Form("row11_3") & "', '" & upload.Form("row12_1") & "', '" & upload.Form("row12_2") & "', '" & upload.Form("row12_3")& "', '" & upload.Form("header1_1")& "', '" & upload.Form("header1_2")& "', '" & upload.Form("header1_3")& "') "
		Connection.Execute(SQLStmt)	
	response.write(sqlstmt)
```

Permalänk: https://www.webforum.nu/p/2085291

## #7 — Zaiman, 2008-02-27T19:48Z

Och fortfarande inget felmeddelande?

Permalänk: https://www.webforum.nu/p/2085292

## #8 — rollo, 2008-02-27T20:01Z

nope

låter jag sidan funka som den skall, så går redirecten till rätt sida

rollo

Permalänk: https://www.webforum.nu/p/2085298

## #9 — Eclipse, 2008-02-28T18:19Z

Jag frågar följande:

1\. Måste du ha så mycket kod på en INSERT?
2\. Det står inte skrivet "on error resume next" på din sida...? Då får du inga felmeddelanden.

\*\*\*
Mitt tips till dig! När du ska skapa en ny påst, börja då med typ det mest basala, som datum. INSERT.

Manipulationen ovan har du sen som en UPDATE. För du måste ändå ha en UPDATE... och det blir FASLIGT mycket kod att hålla ordning på!! Du har ju nästan samma kod på UPDATE som på INSERT! Varför skriva samma sak två gånger...??

Nåja, jag vet inte i vilket sammanhang detta är, men jag ville bara väcka tanken!

Permalänk: https://www.webforum.nu/p/2085442

## #10 — rollo, 2008-02-28T21:08Z

1\. ja, dessvärre. Min kunskapsnivå säger att jag behöver det. Jag har en tabell med 36 celler som jag skall spara + 10 andra fält, därav längden på INSERTen

2\. Kör inte med on error resume next

\*\*\*
funderade på att dela upp inserten i en insert o en, eller flera update. Det känns som det lämpligaste eftersom det inte funkar att köra en insert

Permalänk: https://www.webforum.nu/p/2085477

## #11 — Eclipse, 2008-02-28T22:26Z

1\. Du missuppfattar mig. Jag säger:

Fixa en INSERT som enbart skapar räknare, använd till exempel bara datum, namn eller annat kort och flexibelt.

Sen har du ditt megaformulär, som jag absolut inte har några åsikter om efter som jag inte känner till vad det är du gör.

Men då kan du köra UPDATE på detta formuläret. 

Alltså, det första användaren gör är att välja ett namn eller ett datum. Du använder INSERT på detta. Sen koller användaren till ditt megaformulär via sidan view.asp?ID=123

Om du, mot förmodan, senare ska byta namn, byta ordning, lägga till eller ta bort fält i ditt megafält så behöver du inte redigera så mycket kod. Minimalt med kod, alltså.

Det spelar ingen roll vad det är du gör. Aldrig är det motiverat med en så lång INSERT... (Om nu inte saker är databasgenererat eller automatiserat, men det är det ju inte i ditt fall.)

\*\*\*
OK, du kanske har en användare som bara trycker OK .... och det skapas en tom post förutom räknare + datum.

So what!?

DELETE \* FROM \[db_h\] WHERE intID = 123

Du gör det krångligt för dig... Trust me! :-)

\*\*\*\*
Du ska inte vara rädd för att använda många poster, att vissa blir onödiga. ingen kommer tacka dig för att du skriver kod som inte förbrukar många poster... Med vettig kod behöver du inte bry dig om sånt som ID med mera... saker bara fungerar.

Samma med dina val av namn. Använd mer beskrivande namn. Skriv vad det är i stället för anonyma textfält:
strFirstname
strLastname
strAddress
strAge
strPhone

Det är en sanning som är en sanning! :-)

Permalänk: https://www.webforum.nu/p/2085489

## #12 — Eclipse, 2008-02-28T22:40Z

<http://www.google.com/search?hl=sv&client=safari&rls=sv-se&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=hungarian+notation&spell=1>

Hungarian Notation kan du söka på. Det betyder i korthet att man döper fält efter vad de är.

Kör du Access...?? De vanligaste är

Prefix: int -- integer
Exempel: intID -- räknare, tal

Prefix: str -- strängar. text
Exempel: strFirstname, strCity -- kan vara kort (max 255) eller PM (tar mer plats i databasen)

Prefix: dte -- datum
Exempel: dteCreated, dteViewTo, dteViewFrom -- datum, tid

Prefix: bol -- sant/falskt (på/av)
Exempel: bolView, bolClick

Hmm... ja, det är typ dom fyra...

Permalänk: https://www.webforum.nu/p/2085492

## #13 — Toonster, 2008-02-28T23:54Z

Hungarian Notation är istort sett att betrakta som död inom den moderna mjukvaruindustrin. Tom Microsoft som var med att pusha fram detta på 90-talet har övergett detta helt i samband med .NET introduktionen. Nu används mer namngivning mot vad man gör istället för att tala om vad det är. För att citera en "anonym" guru:

> my belief is that Hungarian notation, and other type-specific naming conventions, are obsolete in an era of strongly-typed object-oriented programming.

 

Fast vi lever i en fri värld, så om man vill använda HN så gör det...

Jag själv övergav det helt när intellisense kom, eftersom den aktiveras av alla reserverade ord. Kändes frustrerande att börja skriva int, och intellisense poppar upp med integer... Dessutom så övergavs det på jobbet ganska kvickt, för att anpassa oss mot resten av världen...

Permalänk: https://www.webforum.nu/p/2085502

## #14 — emission, 2008-02-29T01:57Z

Tack Toonster, håller helt med. 

Ett tips, rollo, eller snarare ett krav, är att du undersöker begreppet SQL Injection. I korthet går det ut på att du inte får lägga in värden i en SQL-sats på detta viset:

```
...LUES('" & tmp_thumb & "','" & upload.Form("falt01") & "','....
```

dvs. att du stoppar in värden direkt från formulärdata el. likn i SQL-satsen. Problem uppstår nämligen om användaren skickar in värden som innehåller apostrofer, eftersom dessa används av SQL för att avgränsa strängar. Om "falt01" skulle innehålla texten "McDonald's" så skulle SQL-strängen bli

```
...LUES('nånting','McDonald's','....
```

och som du ser så blir det helt fel då, med apostroferna runt "s". Lösningen för de flesta databastyperna är att man ersätter alla apostrofer med dubbla apostrofer (inte citationstecken, utan två apostrofer)

```
...LUES('" & tmp_thumb & "','" & replace(upload.Form("falt01"),"'","''") & "','....
```

Detta är JÄTTEVIKTIGT! Problemet är inte bara att det kan bli fel när man ska söka eller uppdatera, utan att en illvillig användare kan förstöra databasen eller komma igenom inloggningssystem etc. genom att lura databasen till att köra SQL-frågor som inte var tänkta att kunna köras.

Permalänk: https://www.webforum.nu/p/2085504

---

Tråden på webben: https://www.webforum.nu/amne/asp/169408-fråga-ang-låååång-insert-sql-sats
