为什么我的经典 ASP 代码插入重复记录(即两条记录而不是一条)?
Why does my Classic ASP code insert a duplicate record (i.e. two records instead of one)?
这是一段简单的 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"
%>
你用 rs.open
打开你的 SQL 语句,然后用 conn.execute
执行它 -> 双插入 不需要为插入创建记录集, conn.execute
就够了。
但是,rs.Open
和 conn.Execute
两种方法都对使用 ADODB.Command
对象的 SQL Injection due to the way the SQL statement has been constructed. In this scenario, the best approach is to sanitise any input before passing directly into a SQL Statement and switch to using parameterised queries 开放。
这是一段简单的 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"
%>
你用 rs.open
打开你的 SQL 语句,然后用 conn.execute
执行它 -> 双插入 不需要为插入创建记录集, conn.execute
就够了。
但是,rs.Open
和 conn.Execute
两种方法都对使用 ADODB.Command
对象的 SQL Injection due to the way the SQL statement has been constructed. In this scenario, the best approach is to sanitise any input before passing directly into a SQL Statement and switch to using parameterised queries 开放。