2011-03-28 49 views
0

我有一個通過Ajax構建以下表單的頁面。ASP MySQL循環數組

<form action="go.asp" method="get"> 
    <!--row--> 
    <input type='hidden' name='BundleItemID' id='BundleItemID' value='123'/> 
    <input type='hidden' name='BundleColorID' id='BundleColorID' value='4'/> 
    <input type='hidden' name='BundleSizeID' id='BundleSizeID' value='Large'/> 
    <input type='hidden' name='BundleQtyID' id='BundleQtyID' value='4'/> 
    <!--#row--> 
</form> 

形式建立起與行之間的循環,使數據看起來就像是:

<form action="go.asp" method="get"> 
    <!--row--> 
    <input type='hidden' name='BundleItemID' id='BundleItemID' value='123'/> 
    <input type='hidden' name='BundleColorID' id='BundleColorID' value='4'/> 
    <input type='hidden' name='BundleSizeID' id='BundleSizeID' value='Large'/> 
    <input type='hidden' name='BundleQtyID' id='BundleQtyID' value='4'/> 
    <!--#row--> 
    <!--row--> 
    <input type='hidden' name='BundleItemID' id='BundleItemID' value='123'/> 
    <input type='hidden' name='BundleColorID' id='BundleColorID' value='4'/> 
    <input type='hidden' name='BundleSizeID' id='BundleSizeID' value='Large'/> 
    <input type='hidden' name='BundleQtyID' id='BundleQtyID' value='4'/> 
    <!--#row--> 
    <!--row--> 
    <input type='hidden' name='BundleItemID' id='BundleItemID' value='123'/> 
    <input type='hidden' name='BundleColorID' id='BundleColorID' value='4'/> 
    <input type='hidden' name='BundleSizeID' id='BundleSizeID' value='Large'/> 
    <input type='hidden' name='BundleQtyID' id='BundleQtyID' value='4'/> 
    <!--#row--> 
    <!--row--> 
    <input type='hidden' name='BundleItemID' id='BundleItemID' value='123'/> 
    <input type='hidden' name='BundleColorID' id='BundleColorID' value='4'/> 
    <input type='hidden' name='BundleSizeID' id='BundleSizeID' value='Large'/> 
    <input type='hidden' name='BundleQtyID' id='BundleQtyID' value='4'/> 
    <!--#row--> 
</form> 

我希望提交一個表單go.asp - 這個網頁將行之間的所有內容循環,提交數據到mySQL,我的代碼到目前爲止:

<% 
    dim LoopData 

     for i=1 to Request.QueryString("BundleItemID").Count 

      Set rs = Server.CreateObject("ADODB.Recordset") 
      sql = "SELECT * FROM tblProducts" 
      rs.Open sql, conn.c 
      While Not rs.EOF 

     LoopData = LoopData & Request.QueryString("BundleItemID")(i) & "" 

     sql= "INSERT INTO tblProducts (BundleItemID,BundleColorID,BundleSizeID,BundleQtyID) VALUES ("&request("BundleItemID")&","&request("BundleColorID")&","&request("BundleSizeID")&","&request("BundleQtyID")&")" 

     rs.MoveNext() 
     Wend 


    next 

%> 

我該怎麼做?

+0

你知道這代碼很容易被sql注入,對吧? – 2011-11-21 23:14:50

+0

是的。儘管ASP經典缺乏mySQL注入嘗試,但它在PHP中更常見 – TheBlackBenzKid 2011-11-22 08:11:42

回答

1

我已經解決了這個問題一個「簡單的方式」:

我所做的就是創建對象的數組(以JSON)的發送到服務器(通過郵寄)。

數組是這樣的:

var arr = [{"ItemID":123,"ColorID":4, "SizeID":"Large", "QtyID"4"}, 
    {"ItemID":123,"ColorID":4, "SizeID":"Large", "QtyID"4"}, 
    {"ItemID":123,"ColorID":4, "SizeID":"Large", "QtyID"4"}, 
    {"ItemID":123,"ColorID":4, "SizeID":"Large", "QtyID"4"}] 

之後,轉到接收到該信息的頁面,並分析請求所產生的名字,你會發現一個數字了順變種的名稱。

,你只需要在調用正確的名稱聲明瞭一些這樣的事:

for i =0 to 4 

Dim strName = "arr[" & i & "]ItemID" 
Dim strValue = request(strName) 

next 

您可以發送一個變量,數組的長度,以幫助你在你的atatement