2009-08-10 44 views
0

我在我的代碼中設置了一個MM_CustomerID會話,然後進一步向下翻頁,我需要將該會話的值插入到表中。但每次我嘗試這樣做時,都會出現一個無效的列名「varCustomerID」。ASP會話值

在頁面的頂部我有這段代碼;

<% 
set rscustomerid = Server.CreateObject("ADODB.Recordset") 
rscustomerid.ActiveConnection = CmdAddCustomer.ActiveConnection 
rscustomerid.Source = "SELECT @@IDENTITY as MaxCustomersID FROM Customers" 
rscustomerid.CursorLocation = 2 
rscustomerid.LockType = 3 
rscustomerid.Open() 
Session("MM_CustomerID")=rscustomerid("MaxCustomersID") 
Session("MM_UserAuthorization") = "5" 
%> 

然後進一步向下,我試圖設置varCustomerID的一個變量以等於MM_CustomerID會話;

<% 
varCustomerID = Session("MM_CustomerID") 
%> 

然後嘗試插入該變量varCustomerID的值插入到訂單表如下:

<% 
'Insert record into Orders recordset when form is submitted 
'and store the unique OrderID 
'Version Date: 09 August 2009 
set CmdAddOrder = Server.CreateObject("ADODB.Command") 
CmdAddOrder.ActiveConnection = MM_dbconn_STRING 
CmdAddOrder.CommandText = "INSERT INTO Orders (OrderCustomer,OrderGrandTotal,OrderStatus) VALUES (varCustomerID,0.00,3)" 
CmdAddOrder.CommandType = 1 
CmdAddOrder.CommandTimeout = 0 
CmdAddOrder.Prepared = true 
CmdAddOrder.Execute() 
%> 

我想知道是否有人可以幫忙嗎?也許只是將會話值插入表中,而不是爲它創建一個變量更簡單一些?

謝謝。

+0

使用存儲過程的任務...它會照顧你的SQL注入... – balexandre 2009-08-10 08:21:16

回答

0

你需要投varCustomerID爲查詢字符串。對Paul的回答略有改變應該能讓你工作,但就像他說你需要小心注射攻擊。

"INSERT INTO Orders (OrderCustomer,OrderGrandTotal,OrderStatus) VALUES (" & varCustomerID & ",0.00,3)" 
3

您需要的SQL命令文本更改爲:

「INSERT INTO訂單(OrderCustomer,OrderGrandTotal,OrderStatus)VALUES(」 + varCustomerID + 「0.00,3)」

但是你可能是容易受到SQL注入......真的是你應該parametrise此查詢:

http://aspnet101.com/aspnet101/tutorials.aspx?id=1

+0

謝謝保羅。我現在得到以下錯誤; 類型不匹配 – doubleplusgood 2009-08-10 08:39:43

+0

您應該調試並逐步完成代碼。檢查你所得到就行了什麼樣的價值: varCustomerID =會議(「MM_CustomerID」) 您可能需要將其轉換爲int類似 varCustomerID =目標類(會話(「MM_CustomerID」)) – Paul 2009-08-10 08:53:16

+0

我跑一個Response.Write來檢查它是否抓取了CustomerID並返回了正確的值。 看起來它只是有一個問題,試圖把數字放入OrderCustomer列(它的數據類型爲int); 類型不匹配:[字符串:‘INSERT INTO訂單(’]「? – doubleplusgood 2009-08-10 09:10:26