我的代码:
<%
Dim cnnSimple ' ADO connection
Dim rstSimple ' ADO recordset
Set cnnSimple = Server.CreateObject("ADODB.Connection")
' DSNLess
cnnSimple.Open "MY CONNECTIONS STRING INFO HERE"
cnnSimple.Execute("insert into SALT (Email, Username, FirstName, LastName, ActivationCode) VALUES ('" & Request.QueryString("payer_email") & "', '" & Request.QueryString("payer_email") & "', '" & Request.QueryString("first_name") & "', '" & Request.QueryString("last_name") & "', '" & Request.QueryString("hash") & "')")
rstSimple.Close
Set rstSimple = Nothing
cnnSimple.Close
Set cnnSimple = Nothing
%>
错误:
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/thanks.asp, line 65
谢谢
第65行是:
cnnSimple.Execute("insert into SALT (Email, Username, FirstName, LastName, ActivationCode) VALUES ('" & Request.QueryString("payer_email") & "', '" & Request.QueryString("payer_email") & "', '" & Request.QueryString("first_name") & "', '" & Request.QueryString("last_name") & "', '" & Request.QueryString("hash") & "')")
答案 0 :(得分:3)
错误意味着使用尚未实例化的对象。从给出的代码片段看,您似乎试图在没有实例化的情况下关闭记录集。
你的意思是将rstSimple设置为cnnSimple.Execute()的结果吗?
编辑:现在我已经看了另一个问题,我建议的可能不是问题。正如人们所指出的那样,在将对象插入字符串之前,你应该真正清理它中的数据(安全性或没有安全性,其中一个变量中的撇号会杀死该语句)。
有可能(我对VBScript的记忆非常模糊)如果Execute()语句失败,则不会将任何内容分配给rstSimple,并且对rstSimple.Close()的调用将生成您看到的错误消息。 / p>
在调用cnnSimple.Execute()之前尝试将rstSimple设置为新的ADODB.Recordset,看看是否能解决问题......
答案 1 :(得分:2)
建议:
设置字符串变量=你的第65行SQL
“插入SALT(电子邮件,用户名,名字,姓氏,激活码)VALUES('”&amp; Request.QueryString(“payer_email”)&amp;“','”&amp; Request.QueryString(“payer_email”)&amp; ;“','”&amp; Request.QueryString(“first_name”)&amp;“','”&amp; Request.QueryString(“last_name”)&amp;“','”&amp; Request.QueryString(“hash”) &amp;“')”
回复于(myVar的)
可能更容易看到这种方式,看看你的查询字符串变量中是否有引号问题,或者其他什么。一旦你对此感到满意: