Di VBScript Anda dapat menggunakan simbol ampersand (&) untuk menggabungkan string. Coba ini:
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
Anda memiliki tiga klausa "dan" terpisah untuk ditambahkan ke kueri sql Anda. Pernyataan bersyarat tidak tergantung satu sama lain sehingga Anda tidak boleh menggunakan elseif
yang untuk opsi berbeda dalam satu pernyataan bersyarat. Lebih mudah untuk memeriksa apakah string tidak kosong if stringname <> ""
daripada menggunakan len
, (dan saya ragu pernyataan bersyarat Anda akan berfungsi karena Anda tampaknya menggunakan huruf kecil "o" di mana Anda seharusnya menggunakan nol)
Sangat mudah untuk membuat kesalahan saat Anda merakit kueri sql seperti ini. Dalam pengujian, seringkali perlu menambahkan baris seperti Response.Write strSqlData
sebelum Anda mencoba menjalankannya untuk memeriksa apakah kueri tersebut sesuai dengan keinginan Anda
Seperti yang disarankan oleh komentar lain, kode Anda rentan terhadap serangan injeksi SQL. Url yang berisi ".asp?" hampir bisa dijamin akan terkena serangan tipe ASPROX cepat atau lambat. Kueri berparameter adalah cara terbaik untuk mencegah hal ini, tetapi satu pendekatan cepat jika nilai string kueri Anda semuanya numerik adalah dengan menggunakan cint()
- misalnya
strSqlData= strSqlData & " and AcademicYear=" & cint(AcademicYear)
Ini akan menimbulkan kesalahan ketidakcocokan jenis jika string kueri berisi apa pun selain angka, dan skrip akan jatuh sebelum mencoba mengeksekusi kueri sql Anda.