SQL / ASP - 预期:“ - 但它在那里?

时间:2010-07-30 23:14:41

标签: sql asp-classic vbscript ado

有人可以帮我解决这个问题吗?它在错误发生错误后给我错误,我不知道它的问题是什么。

我的代码:

<%
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") & "')")

2 个答案:

答案 0 :(得分:3)

错误意味着使用尚未实例化的对象。从给出的代码片段看,您似乎试图在没有实例化的情况下关闭记录集。

你的意思是将rstSimple设置为cnnSimple.Execute()的结果吗?

编辑:现在我已经看了另一个问题,我建议的可能不是问题。正如人们所指出的那样,在将对象插入字符串之前,你应该真正清理它中的数据(安全性或没有安全性,其中一个变量中的撇号会杀死该语句)。

有可能(我对VBScript的记忆非常模糊)如果Execute()语句失败,则不会将任何内容分配给rstSimple,并且对rstSimple.Close()的调用将生成您看到的错误消息。 / p>

在调用cnnSimple.Execute()之前尝试将rstSimple设置为新的ADODB.Recordset,看看是否能解决问题......

答案 1 :(得分:2)

建议:

  1. 声明一个字符串变量(myVar)
  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;“')”

  3. 回复于(myVar的)

  4. 可能更容易看到这种方式,看看你的查询字符串变量中是否有引号问题,或者其他什么。一旦你对此感到满意:

    1. cnnSimple.Execute(myVar的)