2015-01-16 64 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時返回的結果是什麼?

相關問題