2010-07-26 64 views
0

我一直在研究這個腳本上週左右,我有重大問題試圖瞭解爲什麼它不正確。SQL和ASP幫助!

我有一些複選框鏈接到電子郵件地址,我需要的是相應的用戶名與該電子郵件。該腳本適用於註冊了不同時事通訊的用戶。

這裏是我的編碼

Set conn = Server.CreateObject("ADODB.Connection") 
conn.open connStr 

emails = Request("emaillist") 

emails = Replace(emails, "'", "''") 
emails = Replace(emails, ", ", "','") 

strSQL = "SELECT name, email FROM emails WHERE email IN ('" & emails & "')" 
Set rs = conn.Execute(strSQL) 

namesAndEmails = rs.GetRows() 
rs.close 

for lnRowCounter = 0 To Ubound(namesAndEmails,2) 
For lnColumnCounter = 0 To Ubound(namesAndEmails,1) 
Response.Write namesAndEmails(lnColumnCounter, lnRowCounter) 
Response.write "</P>" 
Next 
Next 

這是整個腳本的一部分,我已經改變了它周圍一點,包括對...下一頁進行調試。

現在爲了解決這個問題,如SELECT語句'名稱,電子郵件'所示,結果完全忽略了電子郵件並僅給出了名稱。

我已經嘗試過直接使用SQL語句,它能夠完美地同時顯示名稱和電子郵件,但不能顯示在我的ASP頁面中。我甚至嘗試在其中放置一個*。

strSQL = "SELECT * FROM emails WHERE email IN ('" & emails & "')" 

將返回用戶ID,姓名,和其他幾個項目的從數據庫而不是名稱和電子郵件在一起,爲什麼?????

這是ASP與SQL Server數據庫

問候

裏克

測試時,它的設置,因爲這從STRSQL結果

值:

SELECT name, email 
FROM emails 
WHERE email IN ('[email protected]','[email protected]') 

這SQL將給我以下答案

name | email 
jo | [email protected] 
fred | [email protected] 

在ASP答案是

[email protected] 
[email protected] 

我想不通,爲什麼在SQL它會顯示姓名和電子郵件,但在ASP它只會顯示的電子郵件,而不是名稱。

我甚至試過

strSQL = "SELECT * FROM emails WHERE email IN ('[email protected]','[email protected]') 

,這將在ASP中產生的所有結果除名稱!!!!!

+0

strSQL分配中電子郵件的價值是什麼?是否有多個(逗號分隔)電子郵件值?你可以給我們提供在'emails'被替換後提交給SQL Server的SELECT語句。 – bobs 2010-07-26 23:28:58

+0

如果您嘗試'選擇名稱作爲SomeName,....'(即提供名稱anothor fieldname),會發生什麼? – Edelcom 2010-07-29 10:37:15

+0

你能告訴我們你的電子郵件表的表定義(數據類型和列長度)嗎? 最簡單的方法是右鍵單擊SQL Management Studio中的表,將其作爲腳本表創建,然後將其粘貼到您的問題中。 – 2010-07-29 11:40:54

回答

0

我不是100%肯定,但我猜你必須交換UBOUND()

爲lnRowCounter = 0至UBOUND的等級參數(namesAndEmails,)
對於lnColumnCounter = 0〜 UBOUND(namesAndEmails,)

+0

感謝您的評論,我認爲這也是,但嘗試後,我得到了一個「超出範圍」的錯誤。 – 2010-07-27 07:32:05

+0

確定我的回答是錯誤的,因爲 Response.Write namesAndEmails(lnColumnCounter,lnRowCounter) 也交換了參數。 因此,您應該首先預測姓名列中的所有姓名以及接下來來自電子郵件列的所有電子郵件。 – BeachBlocker 2010-07-27 10:06:27

+0

沒有仍然不顯示名字只有eamil! – 2010-07-27 10:37:59

0

嘗試

For i = LBound(namesAndEmails, 2) To UBound(namesAndEmails , 2) 
    Name = namesAndEmails(0, i) 
    Email = namesAndEmails(1, i) 
    Response.Write Name & " " & Email 
Next 
1

我可能不能完全如果你想要了解這一點,但做的是輸出一個名稱與他們各自的電子郵件地址列表,你可以嘗試簡化到這一點:

name = rs("name") 
email = rs("email") 

do while rs.eof <> true 
    response.write(name & " " & email & "<br />") 
    rs.movenext 
loop 

...至少出於測試目的。另外,您也可以串聯在SQL語句中的姓名和電子郵件合併到一列:

SELECT name + '|' + email as nameemail FROM emails WHERE email IN ('" & emails & "') 

...會給你「名稱|電子郵件」,你可以很容易地操縱字符串。

+0

我同意。 GetRows()有點奇怪的功能。使用循環比使用GetRows()可以更清楚地看到你在做什麼。 – 2010-07-31 12:28:02

0

如果您輸出網頁的「查看源代碼」,該怎麼辦?有時我遇到了一些我看不見的錯誤,因爲它看起來像一個無效的標籤,渲染器會默默地忽略它。