|
| 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 ...
| |
|
|