我使用ASP javascript使用用户传递的参数从MySQL数据库中进行选择。 我想用准备好的声明来做这件事。我在VB脚本中看过一些例子,但是在ASP JS中无法弄清楚。 我通常会以下列方式进行:
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);
我想更改此设置以更安全的方式传递用户数据,任何人都可以帮忙吗?
答案 0 :(得分: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();
并按照您的意愿操作记录集
有条件资源
答案 1 :(得分:0)
ASP javascript通常被称为JScript。如果你在stackoverflow上搜索'[jscript] [mysql]',它会向你显示一个问题,它可能会回答你的问题:
ADODB Command failing Execute with parameterised SQL query
您还可以google'msdn jscript ado'获取更多样本。
答案 2 :(得分:0)
虽然直接从浏览器端代码调用数据库不是将数据检索到页面的首选方法(现在大多数人更喜欢AJAX / JSON请求......),但您绝对可以提高代码的安全性通过将SQL语句转换为存储过程调用。
有关详细信息,请参阅http://andrewu.co.uk/clj/stored_procedures_with_jscript/