2013-04-30 63 views
1

我使用ASP JavaScript來使用由用戶通過參數的MySQL數據庫中選擇一個SQL SELECT語句。 我想用準備好的語句來做到這一點。我已經看到了VB腳本中的例子,但無法在ASP JS中找到它。 我通常會做它以下列方式:ASP的JavaScript如何創建使用事先準備好的聲明

var adoConnection = Server.CreateObject("ADODB.Connection"); 
adoConnection.Open("dsn=my-dsn;uid=userid;pwd=password;"); 


var getAdmin = "SELECT * FROM users WHERE username = '"+String(Request.QueryString("username"))+"'"; 
var rsAdmin = adoConnection.Execute(getAdmin); 

我想改變這傳遞一個更安全的方式將用戶數據,任何人都可以幫忙嗎?

回答

2

在ASP正確參數化查詢中,你需要使用「ADODB.Command」來執行的,而不是直接使用ADODB.Connection查詢。 ADODB.Command有一個名爲法 「.CreateParameter()」,允許你想要的。

示例代碼

'-------------------------------------------------------------------' 
var oCmd = Server.CreateObject("ADODB.Command") 
var sSQL = "SELECT username, action FROM userlog WHERE event_date < ? ;"; 
oCmd.CommandText = sSQL 
oCmd.ActiveConnection= oConn 
'-------------------------------------------------------------------' 
var oPar = oCmd.CreateParameter("event_date",7,1,,dDate); 'Date 
oCmd.Parameters.Append(oPar); 
'-------------------------------------------------------------------' 

....做到這一點,直到你有附加的所有參數和....

var oRS = oCmd.Execute(); 

,你manipule記錄,如你所願

aditional的資源

ADODB Documentation

MSDN Example

+0

謝謝你,這是非常有用的,我現在工作。非常感謝 – user1620090 2013-04-30 14:57:49

0

ASP的javascript通常下文稱爲JScript的。如果你搜索「[JScript中] [MySQL的]」計算器上它會告訴你一個問題,這可能會回答你的問題:

ADODB Command failing Execute with parameterised SQL query

你也可以谷歌的額外樣本的MSDN JScript的結結實實「。

+0

是的,你說得對,我正在尋找ASP javacsript和返回收效甚微的話,發佈的鏈接也非常有幫助。非常感謝 – user1620090 2013-04-30 14:58:46

0

雖然調用到數據庫直接從瀏覽器端代碼是不是數據檢索到頁面的首選方法(大多數人更喜歡AJAX/JSON請求這些天......),你肯定可以提高安全性的通過將SQL語句轉換爲存儲過程調用來執行代碼。

有關詳細信息,請參閱http://andrewu.co.uk/clj/stored_procedures_with_jscript/