sql >> Database teknologi >  >> RDS >> Sqlserver

Betinget erklæring i sql-forespørgsel på klassisk ASP-side

I VBScript kan du bruge og-tegnet (&)-symbolet til at sammenkæde strenge. Prøv dette:

strSqlData="select * from MyTable where gender='male'" 

if AcademicYear <> "" then 
strSqlData= strSqlData & " and AcademicYear=" & AcademicYear
end if

if Batch <> "" then
strSqlData= strSqlData & " and Batch=" & Batch    
end if  

if School <> "" then 
strSqlData= strSqlData & " and School=" & School
end if  

Du har tre separate "og"-klausuler, der skal tilføjes til din sql-forespørgsel. De betingede udsagn er uafhængige af hinanden, så du bør ikke bruge elseif som er for forskellige muligheder inden for en enkelt betinget erklæring. Det er nemmere at kontrollere, om en streng ikke er tom if stringname <> "" end at bruge len , (og jeg tvivler på, at dine betingede udsagn ville fungere, fordi du ser ud til at bruge et lille bogstav "o", hvor du skal bruge et nul)

Det er meget nemt at lave fejl, når du samler sql-forespørgsler som denne. I test er det ofte værd at tilføje en linje som Response.Write strSqlData før du prøver at udføre den for at kontrollere, at forespørgslen er, hvad du havde til hensigt

Som andre kommentarer dog har foreslået, er din kode sårbar over for et SQL-injektionsangreb. Webadresser, der indeholder ".asp?" kan næsten garanteres at blive ramt af et angreb af typen ASPROX før eller siden. Parametriserede forespørgsler er det bedste middel til at beskytte sig mod dette, men en hurtig tilgang, hvis dine forespørgselsstrengværdier alle er numeriske, er at bruge cint() - f.eks.

strSqlData= strSqlData & " and AcademicYear=" & cint(AcademicYear)

Dette vil give en type mismatch-fejl, hvis forespørgselsstrengen indeholder andet end tal, og scriptet vil falde om, før det forsøger at udføre din sql-forespørgsel.



  1. Android Sqlite ydeevne

  2. Sådan finder du en streng i en streng i SQL Server

  3. Kan en kontrolbegrænsning relatere til en anden tabel? Oracle

  4. Fjernelse af links fra indlæg i wordpress ved hjælp af query