大家知道为了防止SQL注入式攻击,在查询数据库的时候最好用ADODB.Command创建参数化的SQL查询语句
比如
Set rs_cmd = Server.CreateObject("ADODB.Command")
rs_cmd.ActiveConnection = conn
rs_cmd.CommandText = "SELECT * FROM user WHERE id = ?"
rs_cmd.CommandType = 1 'adCmdText
rs_cmd.Parameters.Append rs_cmd.CreateParameter("id", 5, 1, -1, 888)
Set rs = rs_cmd.Execute()
'或者
Set rs = rs_cmd.Execute(, Array(888))
但是有个问题来了,我想用SQL的In操作符
比如这样的SQL语句:SELECT * FROM user WHERE id IN (777, 888, 999)
我就不知道怎么写参数化命令了
我写成下面这样也不对
rs_cmd.CommandText = "SELECT * FROM user WHERE id IN (?)"
rs_cmd.Parameters.Append rs_cmd.CreateParameter("ids", 5, 1, -1, "777,888,999")
Set rs = rs_cmd.Execute()
'或者
Set rs = rs_cmd.Execute(, Array("777,888,999"))
希望大侠帮帮忙
------解决方案--------------------
只是一组id的话可以用正则表达式判断一下 /^\d+(\,\d+)*$/ ,如果测试通过可以放心用 sql拼接去解决的了。
否则的话,就转成 N 组的SELECT ...id=? OR id=? OR ...
------解决方案--------------------
http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html
http://blog.csdn.net/pittroll/article/details/6641054