2015-01-16 62 views
-2

你好,我试图将数据库中的电子邮件数据存储到asp或html。我能读取数据,但后来当我添加代码设置storeEmail = BS的Response.Write(“EMAIL_ADDR”)它给我一个错误消息,微软VBScript编译错误“800a0401”不能从数据库中存储数据,但我可以从它读取

预计语句的结束

/login/reset_form.asp,line 44

Set storeEmail = Response.Write bs(“email_addr”)。这里是我的代码:

DIM objConn, bs, ossql 
 
    Set objConn = Server.CreateObject("ADODB.Connection") 
 
    objConn.Open "Provider=MSDASQL.1;Password=**;Persist Security Info=True;User ID=**;Data Source=**" 
 
    ossql = "SELECT email_addr FROM user WHERE username = '" & strUsername & "' AND system_code= '" & strHealth & "' AND facility_code = '"& strFacility & "'" 
 
    Set bs = objConn.Execute(ossql) 
 

 
    DIM storeEmail 
 
    Set storeEmail = Response.Write bs("email_addr")

+0

您确实需要参数化您的查询。这些对sql注入攻击很有用。我的猜测是你在你的一个字符串变量中有一个单引号。顺便说一下,使用response.write不会将列放在数据库中,它会将其显示在页面上。 –

+0

@Sean Lange让你说response.write不存储值?它只会让你有权显示在网页上?我的SQL是正确的,我在甲骨文测试,它工作正常。我可以阅读,但不能存储价值。 – express

+1

Response.write不会在Oracle中存储值。 Response.write是用于将html插入到httpresponse中的Response对象的一种方法。如果你想插入数据,你必须运行一个插入语句。为自己做个忙,不要忽视我对sql注入的评论。你的代码是一本教科书的例子。 –

回答

0

的Response.Write将内容添加到输出流

如果你试图赋值给一个变量,然后不使用“设置”不要像这样使用“response.write”;

dim storeEmail 
storeEmail = "" 

if not bs.eof then 
    storeEmail = bs("email_addr") 
end if 
+0

我以前做过,给了我一个错误ADODB.Field错误'800a0bcd' BOF或EOF都为True,或者当前记录已被删除。请求的操作需要当前记录。 /login/reset_form.asp,第44行storeEmail = bs(“email_addr”) 我的记录仍然存在 – express

+0

只有当您没有收到至少有一条记录的记录集时,才会出现该消息。 在这种情况下,您应该先验证您是否有记录集。我扩大了我的评论以包括该检查。 –

0
DIM objConn, bs, ossql 
    Set objConn = Server.CreateObject("ADODB.Connection") 
    objConn.Open "Provider=MSDASQL.1;Password=**;Persist Security Info=True;User ID=**;Data Source=**" 
    ossql = "SELECT email_addr FROM user WHERE username = '" & strUsername & "' AND system_code= '" & strHealth & "' AND facility_code = '"& strFacility & "'" 

    response.write "SQL: "& ossql 
    response.flush  

    Set bs = objConn.Execute(ossql) 

    IF NOT bs.EOF THEN 

     DIM storeEmail 
     Set storeEmail = Response.Write bs("email_addr") 

    END IF 

什么是SQL说呢?是否会返回任何结果?当您针对数据库运行SQL时返回的结果是什么?

相关问题