On 14 Jan 2008 16:17:44 GMT, Bo <2630post@gnail.com> wrote:
>Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
>> On Mon, 14 Jan 2008 15:12:06 +0100, Jørn Andersen <jorn@jorna.dk> wrote:
>>
>> Det gik vist lidt for hurtigt:
Så prøver vi engang til :)
<snip>
>[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator)
>in query expression 'id = 7 overskrift = prove uden lyd'.
Ja, det ser jo forkert ud: Der mangler et AND (missing operator).
Så det gik endnu engang for hurtigt ...
Derudover så skal der apostrof om "prove uden lyd".
<snip>
>SQLstmt = "SELECT * FROM forum WHERE id = " & Request("id") & _
>" overskrift = " & Request("overskrift")
Prøv med:
SQLstmt = "SELECT * FROM forum WHERE id = " & Request("id") & _
" AND overskrift = '" & Request("overskrift") & "'"
>'response.write SQLstmt
Burde så give:
SELECT * FROM forum WHERE id = 7 AND overskrift = 'prove uden lyd'
Et tip:
Når du udskriver SQL'en som ikke virker, så prøv at indsætte den i
Access. Den er nogle gange flink til at pege på, hvor det er galt.
Et andet tip:
Det er ikke en god idé at sætte Request(..) direkte ind i en SQL-streng.
Se fx:
<url:
http://www.asp-faq.dk/article/?id=95>
Du kan lave stærre sikkerhed, og din kode bliver mere overksuelig, hvis
du først gemmer i en variabel og validerer input (fx for om det er et
tal - evt. inden for et "lovligt" interval - eller om det er en
tekst-streng, eller om det evt. er en tom værdi.
Og det er sjældent en god idé *kun* at bruge Request, når det faktisk er
en Request.QueryString, du har brug for.
En simpel validering kunne fx se således ud:
intId = Request.QueryString("id")
If IsNumeric(intId) Then
intId = Int(intId)
Else
' Der er en fejl
End If
strOverskrift = Trim("" & Request.QueryString("overskrift"))
If strOverskrift = "" Then
' Der opstod en fejl
End If
strSql = "SELECT * FROM forum" & _
" WHERE id = " & intId & _
" AND overskrift = '" & strOverskrift & "'"
Good luck!
--
Jørn Andersen,
Brønshøj