2014-03-30 146 views
-2

我有一個選擇下拉這是從數據庫填充,當表單提交我從選擇結果與經典ASP SQL語句

SQL_query = "SELECT * from Flytasks where waabase like '"+waabase+"'" 

我想有一個表單選項從下拉列表中選擇單詞「ALL」,並且需要一個SELECT語句,當選擇ALL時,它將返回所有記錄,單詞ALL不在數據庫中。

這可能嗎?

提前感謝

羅布

+2

此代碼是容易受到SQL注入式攻擊。它實際上是乞求被黑客攻擊。 –

+0

它只是一個簡單的例子,所以我可以嘗試並得到我的問題的答案 –

+0

不要將易受攻擊的代碼傳播到不了解更好的人可以看到並模仿它的地方,即使只是簡單的例子。 –

回答

0

在產生下拉選項查詢,做這樣的事情:

select blabla 
from tbl 
union all 
select 'All' 

(指定「全部」作爲文字,因爲它不不存在於表上,使用聯合將它與存在的值連接起來)

然後在使用所選下拉值的查詢中,執行類似這樣的:

select * 
from tbl 
where promptfield = promptvalue 
union all 
select * 
from tbl 
where promptvalue = 'ALL' 

需要注意的是,當「ALL」的下拉選擇,在這個聯盟中第一個查詢將基本返回任何結果和第二個將運行併產生所有的結果。當選擇了除全部之外的東西時,它將被用作標準,第一個查詢會產生結果,第二個只會返回任何內容,基本上按照您的要求進行。

+0

我剛纔想 SQL_query = 「SELECT * FROM Flytasks其中waabase喜歡 ' 」+ waabase +「' UNION ALL SELECT * FROM Flytasks其中waabase = 'ALL'」 卻得到了 [微軟] [ODBC Microsoft Access驅動程序]定義的字段太多。 –

+0

桌子上有多少列?可能是http://stackoverflow.com/questions/13846776/union-all-query-too-many-fields-defined –

+0

之前工會所有有4個,只是一個後,我可以從鏈接看到我需要的相同的數字每邊,將讀更多 –

1

這是傳統的ASP嗎?您的代碼顯示字符串連接的加號不是傳統ASP。

如何:

If waabase <> "ALL" Then 
    SQL_query = "SELECT * from Flytasks where waabase like '" & waabase & "'" 
Else 
    SQL_query = "SELECT * from Flytasks" 
End If 

和SQL注入保護的一點點,你可以改變爲:

SQL_query = "SELECT * from Flytasks where waabase like '" & Replace(waabase, "'", "''") & "'"