为什么我的经典ASP代码插入重复记录(即两个记录而不是一个记录)?

时间:2019-07-04 07:18:36

标签: database insert asp-classic

这是一段简单的ASP代码。我不应该对此有问题。但是,这里!

我已经搜索了Stack Overflow,但找不到答案。我有一个SQL插入,可继续创建两个记录。我找不到解决此问题的原因,节奏或韵律。是什么导致我有此重复记录?

<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; DATA 

SOURCE=c:/inetpub/wwwroot/website/database/msg.mdb"
sql="INSERT INTO msg (uid,thisuid,bizid,ucomments,posted) VALUES 
('"&request("uid")&"','"&request("thisuid")& 
"','"&request("bizid")&"','"&request("ucomments")&"','"&Now&"');"

Set rs= Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 2
conn.Execute sql
conn.close

'response.redirect "show-msg.asp"
%>

1 个答案:

答案 0 :(得分:4)

使用rs.open打开SQL语句,然后使用conn.execute执行它->双重插入无需为插入创建记录集,conn.execute就足够了。 / p>

但是,由于构造SQL语句的方式,方法rs.Openconn.Execute都向SQL Injection开放。在这种情况下,最好的方法是在直接传递到SQL语句之前清理所有输入,然后切换到使用ADODB.Command对象的parameterised queries