如何根据手动输入的文本字段限制sql记录集

时间:2014-01-07 17:18:50

标签: sql sql-server sql-server-2008 asp-classic

我正在尝试创建一个html表,它将基于静态字段动态地从SQL表中获取数据。现在(感谢本网站上的另一篇文章)我可以在表格中获得所有结果,以便显示以下sql和html

SQL

sql = "SELECT * FROM tblProductCatalogue INNER JOIN tblProducts ON tblProductCatalogue.ProductID = tblProducts.ProductID WHERE tblProductCatalogue.CustomerID = 1"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql,conn,3,3

HTML

<table>
  <tr>
    <th>Item Number</th>
    <th>Description</th>
    <th>Price</th>
  </tr>

<% While NOT rs.eof 'loops through records'%>     

  <tr>
    <td ><%= rs("PartNumber)%></td>
    <td><%= rs("DESC")%></td>
    <td><%= rs("DerivedPrice")%></td>
  </tr>

<% rs.MoveNext
Wend 

rs.close
Set rs = Nothing

%>

</table>

但是现在对于稍微不同的任务,我希望能够让表格只提取我手动输入到第一个单元格中的部分号码的价格和描述。

<tr>
  <td name="StaticText">PartNumber</td>
  <td><%= rs("Description")%></td>
  <td><%= rs("DerivedPrice")%></td>
</tr>

我对任何类型的编程语言都没有太多经验,所以如果你能对我的回复有点愚蠢,我将不胜感激。 IIS 6站点使用经典的asp和asp.net与Javascript和SQL Server 2008

谢谢!

斯坦

1 个答案:

答案 0 :(得分:1)

您需要一个名为“count”的表单元素,然后以HTML格式发回服务器。

<input type="text" name="count" />

然后你需要确保它是一个数字而不是一些邪恶的SQL注入代码并构建你的SQL字符串:

resCount = request("count")
if IsNumeric(resCount)
   sql = "SELECT top " & resCount & " * FROM tblProductCatalogue...."
end if
...

通常,在进行用户输入时,使用参数化查询会更安全。

请参阅:Parameterized query in Classic Asp