2013-10-28 44 views
0

我真的不喜歡用傳統的ASP工作,但我不得不...經典ASP形式給SQL Server的轉換失敗「%%」爲int數據類型

我有這樣的形式:

<form name="QRForm" id="frm" method="post" action="qry.asp"> 
    <input name="orderno" type="int" value="<%=Order_id%>"> 
    <input name="" type="submit" value="Go To Next Step" /> 
</form> 

這個代碼qry.asp來處理訂單ID

<%Set MySQLConn = Server.CreateObject("ADODB.Connection") 
          MySQLConn.Open "driver={SQL Server};server=..." 
GetOrder = "SELECT * FROM Jobs WHERE JobID='%" & Order_id &"%';" 
          Set ShowOrder = MySQLConn.execute(GetOrder) 
          if ShowOrder.EOF then%> 
          <div class="initiatives"> 
           <p>No such record</p> 
          </div> 
         <%else 
          Do While Not ShowOrder.EOF%> 
          <div class="initiatives"> 
           <p><span><%=ShowOrder("JobID")%></span><br /> 
           <%=(ShowOrder("Payments"))%></p> 
           </div> 
         <%ShowOrder.Movenext 
          Loop 
          end if%> 

難道我做錯了什麼或做我需要Order_Id轉換爲整數?如果是這樣如何?我試過castconvert或者將它傳遞給一個會話,但無濟於事。任何幫助,將不勝感激。

回答

3

這是=錯誤的標誌。如果您使用通配符(%)SQL語法是

SELECT * FROM Jobs WHERE JobID like '%YourValue%'. 

我注意到你正在使用ODBC連接字符串,它應該工作,但是本機客戶端或OLEDB通常被認爲是SQL是更好的選擇服務器 - 見下文

http://www.connectionstrings.com/sql-server/

0

我實際上設法它的鏈接通過

<% Dim OrderId 
OrderId =Request("Order")%> 

    ...... 

GetOrder = "SELECT * FROM Jobs WHERE JobID like'"+OrderId+"'" 

注意:這種方式可能會離開代碼易受代碼注入的影響。它的東西,我知道 - 但不關心 -

我認爲你的代碼應該工作以及約翰。我只是無法讓它在我的項目中工作(它返回null)。 謝謝你不管

你提到的連接字符串也很有趣。這段代碼實際上是我正在對一箇舊網站進行修改的一部分,它可能會使用它。

+0

我的主要觀點是你需要在你的查詢中使用「like」而不是「=」。如果是面向公衆的網站,我會擔心SQL注入。最好的防禦措施是在收集表單和查詢字符串變量時使用範圍保護,您應該能夠在Google上找到大量有關如何執行此操作的內容。 Querystrings特別容易受到攻擊,那裏有很多ASPROX類型的惡意軟件,它們的目標是包含「.asp?」的URL – John

相關問題