/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL fejl - ASP m MySQL
Fra : Otto Leholt


Dato : 27-07-05 09:18

Hej
arbejder på en bogdatabase - og har et problem som jeg nu ikke har kunnet
løse i flere timer ...

'Fra linket sendes VARIABEL 'strdecimal'
<a href="<%=Request.ServerVariables("SCRIPT_NAME")
%>?mainklasse=Geografi&strdecimal= 40 AND 49 ">40-49 Geografi</a>

'den hentes efter klik på link - fungerer fint
strdecimal = request("strdecimal")

' variabel indsættes i SQL

RS.Open "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE decimalklasse
BETWEEN" & strdecimal &" ORDER BY decimalklasse "

Og så kommer denne fejl .......

You have an error in your SQL syntax. Check the manual that corresponds to
your MySQL server version for the right syntax to use near 'ORDER BY
decimalklasse' at line 1

Jeg har flyttet mellemrum ' " og prøvet alt hvad jeg kan komme på mht min
SQL - men intet hjælper ...
Nogen der har et bud ... Det skal lige siges at jeg bruger My SQL DB

hilsen Otto



 
 
Casper Bang (27-07-2005)
Kommentar
Fra : Casper Bang


Dato : 27-07-05 09:48

> RS.Open "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE decimalklasse
> BETWEEN" & strdecimal &" ORDER BY decimalklasse "

Udskriv den, og se hvad det er du prøver at proppe i hovedet på din
database!

response.write "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE
decimalklasse
BETWEEN" & strdecimal &" ORDER BY decimalklasse "



Otto Leholt (27-07-2005)
Kommentar
Fra : Otto Leholt


Dato : 27-07-05 10:06


"Casper Bang" <bang_casper@hotmail.com> wrote in message news:42e74a27$0$140
> Udskriv den, og se hvad det er du prøver at proppe i hovedet på din
> database!

Hej Casper
Jammen det ser smukt ud
SELECT id, decimalklasse, emneklasse FROM dk5 WHERE decimalklasse BETWEEN 10
AND 19 ORDER BY decimalklasse

Men jeg får fortsat fejlen ..

hilsen otto



Casper Bang (27-07-2005)
Kommentar
Fra : Casper Bang


Dato : 27-07-05 11:03

> Jammen det ser smukt ud

Umidelbart ser det nydeligt ud :)


> SELECT id, decimalklasse, emneklasse FROM dk5 WHERE decimalklasse BETWEEN
> 10 AND 19 ORDER BY decimalklasse

Jeg kan ikke se problemet umidelbart - så tag det lidt ad gangen, og find ud
af hvad der er galt.
Start med at fjerne din "ORDER BY decimalklasse", og se om du stadig får en
fejl...



Otto Leholt (27-07-2005)
Kommentar
Fra : Otto Leholt


Dato : 27-07-05 12:54


"Casper Bang" <bang_casper@hotmail.com> wrote >
> Jeg kan ikke se problemet umidelbart - så tag det lidt ad gangen, og find
> ud af hvad der er galt.

Hej Casper m.fl
Nej det er sku også svært - og svært at forklare - men prøv at se på
http://www.leholt.dk/demo/books_2/showall_emner.asp

her kan du se at problemet er hvordan jeg får variablen 'strdecimal' sendt
videre når der vælges et underemne ..

hilsen Otto
- jeg blir snart sindsyg .. :-|



Otto Leholt (27-07-2005)
Kommentar
Fra : Otto Leholt


Dato : 27-07-05 12:57

Ups - jeg glemte lige den stunp kode hvor problemet er -
koden skriver linket til underemner
response.write"<a href="&
Request.ServerVariables("SCRIPT_NAME")&"?mainklasse=" & mainklasse
&"&strdecimal=" & strdecimal &"&subemne=" & Server.URLEncode(emneklasse) &">
(" & decimalklasse & ")" & emneklasse & "</a> |" :

PROBLEMET er at variablen 'strdecimal' ikke blir videre sendt .. mæørkeligt
for den er jo at se på siden ..

hilsen Otto :-|



Jens Gyldenkærne Cla~ (27-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-07-05 13:00

Otto Leholt skrev:

> Jammen det ser smukt ud
> SELECT id, decimalklasse, emneklasse FROM dk5 WHERE
> decimalklasse BETWEEN 10 AND 19 ORDER BY decimalklasse

Generelt er det en god ide at bruge en variabel til sql-sætningen -
så er man sikker på at en ændring i den kode der køres også kommer
med når sætningen udskrives.

Altså i stedet for at have:

Response.Write "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE
decimalklasse BETWEEN" & strdecimal &" ORDER BY decimalklasse "

RS.Open "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE
decimalklasse
BETWEEN" & strdecimal &" ORDER BY decimalklasse "

- har man:

Dim strSQL
strSQL = "SELECT id, decimalklasse, emneklasse FROM dk5 WHERE
decimalklasse BETWEEN" & strdecimal &" ORDER BY decimalklasse "

Response.Write strSQL

RS.Open strSQL
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (27-07-2005)
Kommentar
Fra : Casper Bang


Dato : 27-07-05 14:52

> Generelt er det en god ide at bruge en variabel til sql-sætningen -
> så er man sikker på at en ændring i den kode der køres også kommer
> med når sætningen udskrives.

Naa, det er jeg nu lidt uenig i... hvorfor bruge server-ressourcer på at
have en sådan variabel?
Når der opstår problemer, kan det måske være nemmere for én at oprette en
sådan variabel, men i andre tilfælde vil det efter min mening være spild af
ressourcer.
100 bytes er da også en smule :)



Jens Gyldenkærne Cla~ (27-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-07-05 13:23

Otto Leholt skrev:

> her kan du se at problemet er hvordan jeg får variablen
> 'strdecimal' sendt videre når der vælges et underemne ..

Hvis du kigger i kildekoden (altså den genererede kildekode), er
svaret - og løsningen - ligetil.

Dine hovedlinks - der virker - angives som dette:
<a href="/demo/books_2/showall_emner.asp?mainklasse=Blandede
Skrifter&strdecimal= 0 AND 7 ">0-07 Blandede Skrifter</a>

Dine underlinks - der ikke virker - angives som her:

<a
href=/demo/books_2/showall_emner.asp?mainklasse=Religion&strdecimal
= 20 AND 29&subemne=Den+Kristne+Religion>

Den afgørende forskel er manglen af anførselstegn i nr. 2.

Derudover ville det være en god ide at bruge url-encode på
værdierne - men det er ikke strengt nødvendigt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Otto Leholt (27-07-2005)
Kommentar
Fra : Otto Leholt


Dato : 27-07-05 13:32


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote >

> Den afgørende forskel er manglen af anførselstegn i nr. 2.

Åhhhh. Ja ......
Jeg vil ikke sige hvor mange timer jeg har brugt på dette ....Kun at jeg er
glad for nu at kunne komme videre Det bedste råd plejer jo at være at
tage opvasken , støvsuge etc - bare væk fra skærmen et øjeblik , men det
gjorde jeg ikke denne gang.

Men Jens ... 1000 tak for det skarpe syn på sagen .. og dine gode råd
iøvrigt

venlig hilsen Otto



Jens Gyldenkærne Cla~ (27-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-07-05 15:36

Casper Bang skrev:

> Naa, det er jeg nu lidt uenig i... hvorfor bruge
> server-ressourcer på at have en sådan variabel?

Overskuelighed.


> Når der opstår problemer, kan det måske være nemmere for én at
> oprette en sådan variabel, men i andre tilfælde vil det efter
> min mening være spild af ressourcer.

Tja - jeg kan ikke huske at have set en eneste artikel der fraråder
brug af variable i asp. Det kan selvfølgelig overdrives, men i
sammenhænge hvor man sætter tekststrenge sammen af flere dele (som
i eksemplet), vil jeg meget nødig undvære en variabel.

I princippet kan det være fint nok at vente med variablen "til der
opstår problemer", men jeg mener ikke det holder i praksis. Hvis
man først når problemet er opstået skal til at se en monsterlang
asp-linje igennem for at finde en mulig fejlkilde, er de måske
sparede resurser på serveren blevet "konverteret" til en del
unødvendig fejlretningstid.

Brug af variable er god kodeskik på samme måde som brug af
forklarende kommentarer - noget andet der også i forhold til
serveren er spild af plads, men i forhold til de personer der skal
vedligeholde koden bestemt ikke er spildt arbejde.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (27-07-2005)
Kommentar
Fra : Casper Bang


Dato : 27-07-05 16:12

> Brug af variable er god kodeskik på samme måde som brug af
> forklarende kommentarer - noget andet der også i forhold til
> serveren er spild af plads, men i forhold til de personer der skal
> vedligeholde koden bestemt ikke er spildt arbejde.

De to ting synes jeg nu ikke helt kan sammenlignes - kommentarerne tager
harddiskplads (meget lidt), og måske en smule ekstra ressourcer i
compile-tidspunktet (hvilket i de nye versioner af IIS kun er når kildekoden
ændres). StrSQL variablene tager RAM i runtime.

Derudover synes jeg ikke det er mere overskueligt at bruge:

StrSQL = "SELECT id FROM members WHERE membername = '"&membername&"'"
Set rs = db.execute(StrSQL)

i forhold til:

Set rs = db.execute( "SELECT id FROM members WHERE membername =
'"&membername&"'")

(bemærk at membername er en variabel, da der er fortaget diverse
verificeringer af den)
Men OK, det bliver vi jo nok ikke enige om... jeg er bare ikke enig i din
udtalelse om at det "generelt er en god ide at bruge en variabel til
sql-sætningen".



Jens Gyldenkærne Cla~ (27-07-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-07-05 21:26

Casper Bang skrev:

> De to ting synes jeg nu ikke helt kan sammenlignes -
> kommentarerne tager harddiskplads (meget lidt),

Jep.

> StrSQL variablene tager RAM i runtime.

Her kunne du så vidt jeg kan bedømme lige så vel have tilføjet
"(meget lidt)".

Jeg medgiver gerne at man skal være mere varsom med unødig brug af
hukommelse end man behøver at være med brug af harddiskplads, men
min pointe er at der i begge tilfælde er en bagatelgrænse.


> Derudover synes jeg ikke det er mere overskueligt at bruge:
>
> StrSQL = "SELECT id FROM members WHERE membername =
> '"&membername&"'"
> Set rs = db.execute(StrSQL)

Prøv at lave en tilsvarende sammenligning med 10 variable (ikke
ualmindeligt hvis man behandler data fra en form).

Jeg foretrækker i øvrigt at have mellemrum før og efter operatorer
(&) - men det er nok primært en smagssag.


> Men OK, det bliver vi jo nok ikke enige om... jeg er bare ikke
> enig i din udtalelse om at det "generelt er en god ide at
> bruge en variabel til sql-sætningen".

Det er fair nok. Men som nævnt i sidste indlæg har jeg ikke set
nogen referencer der fraråder brug af variable. Jeg kan godt nok
heller ikke finde artikler der direkte anbefaler dem, men i alle de
tutorials jeg kan huske, bruges der variable i stor stil.

Hvis du kender nogle artikler eller undersøgelser om emnet, vil jeg
gerne se dem - ellers må vi nok bare blive enige om at være uenige.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Casper Bang (27-07-2005)
Kommentar
Fra : Casper Bang


Dato : 27-07-05 21:39

>> StrSQL variablene tager RAM i runtime.
>
> Her kunne du så vidt jeg kan bedømme lige så vel have tilføjet
> "(meget lidt)".

Du bruger vel et par hundrede byte på en sådan SQL-streng (det er vel ca.
hvor mange tegn den har)... men lidt har jo også ret :)


> Jeg foretrækker i øvrigt at have mellemrum før og efter operatorer
> (&) - men det er nok primært en smagssag.

Jeg tror det kommer meget an på hvilken editor man bruger - om hvordan den
color-encoder det.
Men ja, i mange tilfælde er det nok kønnere :)


> Hvis du kender nogle artikler eller undersøgelser om emnet, vil jeg
> gerne se dem - ellers må vi nok bare blive enige om at være uenige.

Det gør jeg desværre ikke, men skal nok sige til hvis jeg falder over det ;)

MVH
~Casper



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste