/ 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
Problemer med SQL string.
Fra : Anders Jacobsen


Dato : 18-11-07 19:59

Hej,

Jeg har lidt udfordringer med en sql string til noget asp mod mysql. Jeg
føler mig overbevist om at det er noget med " ' ", men jeg syntes snart jeg
har prøvet alt...

Denne her virker:

objRS.Open "SELECT * FROM byer WHERE postnr=9000", objConn, 3,3

Men jeg vil gerne kunne kalde siden med ?nr=9000 men den fejler.

objRS.Open "SELECT * FROM byer WHERE postnr='" & Request.QueryString("nr") &
"' " & ", objConn, 3,3"

Hvad går der galt ? Findes der ikke et program der kan hjælpe med at lave de
hersens sql strings så de er rigtige ?

pft.




 
 
Philip Nunnegaard (18-11-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 18-11-07 20:21

> Jeg har lidt udfordringer med en sql string til noget asp mod mysql. Jeg
> føler mig overbevist om at det er noget med " ' ", men jeg syntes snart
> jeg har prøvet alt...

Det er højest tænkeligt noget med aprostrofferne.

> Denne her virker:
> objRS.Open "SELECT * FROM byer WHERE postnr=9000", objConn, 3,3
>
> (...)
> objRS.Open "SELECT * FROM byer WHERE postnr='" & Request.QueryString("nr")
> & "' " & ", objConn, 3,3"

Den sidste giver dette output:
SELECT * FROM byer WHERE postnr='9000'

Så SQL-sætningen skal nok nærmere være (forudsat at postnr er et talfelt
(INT):
objRS.Open "SELECT * FROM byer WHERE postnr=" & Request.QueryString("nr"),
objConn, 3,3"

Personligt bruger jeg gerne én linie mere ved disse database-kald:

strSQL = "select...osv."
objRS.open(strSQL)

Hvis det fejler, kan jeg altid indsætte et response.write strSQL for at se,
hvad den egentlig _tror_, at jeg vil have den til.


Anders Jacobsen (18-11-2007)
Kommentar
Fra : Anders Jacobsen


Dato : 18-11-07 21:44


> strSQL = "select...osv."
> objRS.open(strSQL)

Hmm... ja problemet lader til at være at den vil have " og ikke ' i strengen

Text : 'SELECT * FROM byer WHERE postnr=4900', objConn, 3,3 - Virker IKKE
Kode: strSQL = "'" & "SELECT * FROM byer WHERE postnr=" &
Request.QueryString("nr") & "'" & ", objConn, 3,3"

Text : "SELECT * FROM byer WHERE postnr=4900", objConn, 3,3 - Virker!!! -
(' er byttr ud med ")

Men hvordan hulen får jeg " ind foran og efter select strengen.

Det har ikke en pind med interger eller noget at gre, men udelunkkende at få
opbygget den rigtige select streng med ASP.










Jørn Andersen (18-11-2007)
Kommentar
Fra : Jørn Andersen


Dato : 18-11-07 22:54

On Sun, 18 Nov 2007 21:43:55 +0100, "Anders Jacobsen"
<andersFJERN@baekkelunden.dk> wrote:

>
>> strSQL = "select...osv."
>> objRS.open(strSQL)
>
>Hmm... ja problemet lader til at være at den vil have " og ikke ' i strengen
>
>Text : 'SELECT * FROM byer WHERE postnr=4900', objConn, 3,3 - Virker IKKE

Og det gør den ikke, fordi ' markerer, at alt herefter er en kommentar
og skal ignoreres.
' kan kun bruges indeni en tekststreng markeret med " "


>Kode: strSQL = "'" & "SELECT * FROM byer WHERE postnr=" &
>Request.QueryString("nr") & "'" & ", objConn, 3,3"

Her har du " rundt om objConn m.v.

>Text : "SELECT * FROM byer WHERE postnr=4900", objConn, 3,3 - Virker!!! -
>(' er byttr ud med ")

>Men hvordan hulen får jeg " ind foran og efter select strengen.

strSql = "SELECT * FROM byer WHERE postnr=" & Request.QueryString("nr")
objRS.open strSql, objConn, 3,3


Når du har fået det til at virke, ville jeg nok bruge lidt tid på at
validere input fra QueryString for at sikre, at det er en numerisk værdi
- fx:

strPostNr = Trim("" & Request.QueryString("nr"))
If IsNumeric(strPostNr) Then
intPostNr = CLng(strPostNr)
If intPostNr > 9999 Or intPostNr < 800 Then
intPostNr = 0
End If
Else
intPostNr = 0
End If

Nu har du sikret dig, at du har et heltal mellem 800 og 9999 - eller du
har tallet 0, hvis betingelserne ikke er opfyldt.

If intPostNr = 0 Then
' En eller anden fejlhåndtering
Else
strSql = "SELECT * FROM byer WHERE postnr=" & intPostNr
objRS.open strSql, objConn, 3,3
' osv.

objRs.Close
End If

Good luck!

--
Jørn Andersen,
Brønshøj

Philip Nunnegaard (19-11-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 19-11-07 06:59


> strSql = "SELECT * FROM byer WHERE postnr=" & Request.QueryString("nr")
> objRS.open strSql, objConn, 3,3

Det var sådan set også sådan, jeg havde tænkt mig det. Altså at objConn,3,3
ikke hørte med i SQL-sætningen.


> If intPostNr > 9999 Or intPostNr < 800 Then

OffTopic:
Egentlig bør postnummeret være over 1000.
0800 er Danske Bank i Høje Taastrup, 0900 er erhvervs-postboks i København.


Anders Jacobsen (19-11-2007)
Kommentar
Fra : Anders Jacobsen


Dato : 19-11-07 08:09


> OffTopic:
> Egentlig bør postnummeret være over 1000.
> 0800 er Danske Bank i Høje Taastrup, 0900 er erhvervs-postboks i
> København.


(999, 'København C', 101),
(929, 'København C', 101),
(910, 'København C', 101),
(900, 'København C', 101),
(877, 'Valby', 101),
(800, 'Høje Taastrup', 169),




Anders Jacobsen (19-11-2007)
Kommentar
Fra : Anders Jacobsen


Dato : 19-11-07 13:29


> Good luck!

Virker 1.000.000 tak. :)

- og tak for alle de øvrige fifs ...



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

Månedens bedste
Årets bedste
Sidste års bedste