Avatar billede totalpc Seniormester
09. juni 2005 - 11:22 Der er 21 kommentarer og
1 løsning

plinger - en gang for alle

Hej

Kan vi ik lige en gang for alle få en nem forklaring på hvornår der skal ' " osv omkring asp-sætninger. Meget gerne et par ekspempler og forskel på tal / tekst. Det er noget af det der driller mig allermest
Avatar billede busschou Praktikant
09. juni 2005 - 11:40 #1
Hvis du mener i forbindelse med sql og databaser så skal der ' omkring tekst og # omkring datoer
Generelt i asp skal der " omkring strenge
eksempel
Response.write "Hejsa"
Der skal " omkring så den ved den skal udskrive ordet - hejsa - ellers tror den det er en variabel
eksempel
Response.write """hejsa"""
To " efter hinanden giver en enkelt " i udskrift , ovenstående vil udskrive - "hejsa" - man siger at " skal escapes med en ekstra "
Response.write ""hejsa""
vil således fejle da den tror den skal udskrive den tomme streng "" og derefter have fat i variablen - hejsa -
I sql skal der bruges ' til tekst
sql = "select * from tabel where tekstfelt = 'dennis' and talfelt = 2"
Der er " omkring det hele da det hele er en streng i asp
Avatar billede busschou Praktikant
09. juni 2005 - 11:41 #2
ellers giv et eksempel på hvor du er i tvivl.. så ser vi på det :o)
Avatar billede totalpc Seniormester
09. juni 2005 - 12:49 #3
det er i forbindelse med sql og databaser. Så det er noget af du du beskriver.
Det var måske bare sådan et nemt lille regelsæt ala
tal skal der ' ' om og tekst "" osv..
Avatar billede busschou Praktikant
09. juni 2005 - 13:01 #4
Jamen det er som jeg skriver
' skal om tekst
# skal om datoer
  skal om tal  <-- Dvs "ingenting" om tal ;o)
Hvis altså du arbejder med access
Avatar billede busschou Praktikant
09. juni 2005 - 13:04 #5
Det er ikke et spørgsmål om hvorvidt det er et tal eller tekst i asp !
Det er et spørgsmål om det er tekst i databasen!
Du kan således godt have følgende
Select * From tabel Where varenr = '11'
Hvis varenr altså er defineret som tekst i databasen
Normalt vil man dog lave det som et tal, men det er selvfølgelig op til den enkelte at designe det som man selv synes det er smartest
Hvis varenr er et tal skal det altså være
Select * From tabel Where varenr = 11
---
Tror ikke det kan beskrives meget bedre... ellers giv et konkret eksempel på din tvivl :o)
Avatar billede totalpc Seniormester
09. juni 2005 - 13:23 #6
Oki. Nej det er fint nok. Takker :D
Avatar billede arne_v Ekspert
09. juni 2005 - 13:24 #7
brug parameters og glem alt om plinger !
Avatar billede totalpc Seniormester
09. juni 2005 - 13:28 #8
Det må du forklare arne_v ?
Avatar billede arne_v Ekspert
09. juni 2005 - 13:56 #9
hvis du bruger parameters så er du helt fri for at tænke på plinger

det koster lidt flere linier kode, men du undgår et hav af problemer
Avatar billede busschou Praktikant
09. juni 2005 - 13:58 #10
arne_v >> hvad mener du med parantes når der snakkes om sql? for så har jeg da også misforstået noget...hmm
Avatar billede arne_v Ekspert
09. juni 2005 - 14:06 #11
parameters er ikke en del af SQL men en del af ADO (jeg formoder at det er ADO når
vi snakker ASP)
Avatar billede busschou Praktikant
09. juni 2005 - 14:29 #12
kan du ikke give et eksempel?
For i min verden har det altid set ud ala
conn.execute("Select * From tabel Where tekst = 'hejsa'")
altså med en pling omkring
Avatar billede arne_v Ekspert
09. juni 2005 - 14:44 #13
jeg laver et eksempel
Avatar billede arne_v Ekspert
09. juni 2005 - 16:12 #14
eksempel:

<%
' open
adParamInput = 1
adInteger = 3
adVarChar = 200
Set con = Server.CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;;"
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
' traditionel
con.Execute "INSERT INTO t1 VALUES(7,'O''Toole')"
' med parameters
cmd.CommandText = "INSERT INTO t1 VALUES(@f1,@f2)"
cmd.Parameters.Append(cmd.CreateParameter("@f1", adInteger, adParamInput))
cmd.Parameters.Append(cmd.CreateParameter("@f2", adVarChar, adParamInput, 50))
cmd.Parameters("@f1") = 8
cmd.Parameters("@f2") = "O'Malley"
cmd.Execute
' close
Set cmd = Nothing
Set con = Nothing
%>
OK
Avatar billede arne_v Ekspert
10. juni 2005 - 11:47 #15
jeg tror ikke at det er så almindeligt i ASP men det bruges meget i Java, .NET etc.

det er dog nok ikke lige hvad man skal starte med
Avatar billede busschou Praktikant
10. juni 2005 - 11:49 #16
Jeg kan slet ikke se hvad det skulle gøre godt for. Det virker langt mere omsonst end den traditionelle måde
Ved du hvad fordelen er ved at benytte den metode i de andre sprog?. Der må vel være en god forklaring andet end for at undgå at tænke på plinger
Avatar billede arne_v Ekspert
10. juni 2005 - 17:08 #17
det undgår pling problemer (både uskyldige irer og ondsindet SQL injection)

det undgår data format problemer

i mange tilfælde giver det bedre performance
Avatar billede arne_v Ekspert
10. juni 2005 - 17:10 #18
eller vend det på en anden måde - hvordan vil du checke om der er lavet
korrekt fordobling af plinger i lt SQL i 500 komplekse ASP side ?

hvis der er en company policy om at der skal bruges parameters, så er det
ret nemt at søge efter execute og se om der er nogle SQL sætninger
uden parameters - og hvis der er brugt parameters så er der lukket
for SQL injection
Avatar billede busschou Praktikant
11. juni 2005 - 14:51 #19
smider et svar og håber spørger har fået svar på sit spørgsmål :o)
arne_v >> Kan godt se det er smart i forhold til sql injection, og det er man jo nød til at tage hensyn til. Så omend koden er mere omsons end traditionelt, så er det vist smart nok må jeg alligevel sige :o)
Avatar billede busschou Praktikant
11. juni 2005 - 14:51 #20
blob :O)
Avatar billede arne_v Ekspert
11. juni 2005 - 17:34 #21
PHP har fået muligheden med PHP5 mysqli.

Se http://www.php.net/manual/en/function.mysqli-stmt-prepare.php
Avatar billede totalpc Seniormester
23. juni 2005 - 08:42 #22
Jeg forstår ik ret meget at det med parameter så jeg holder mig til det jeg kender og som busschou har gjort lysere for mig ;o)

men tak for input begge 2
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester