【问题标题】:PHP/MSSQL - Filtering from User Input (HTML)PHP/MSSQL - 过滤用户输入 (HTML)
【发布时间】:2013-01-14 06:10:24
【问题描述】:

我被分配了这个任务,通过用户输入对我当前的 SQL 查询进行某种过滤。 基本上,我正在寻找一个过滤选项,无论是某种菜单还是按钮,都无所谓。我的mssql如下:

SELECT TOP 10 Test_Database.Distributor, Test_Database.Value
    FROM Test_Database
    WHERE Test_Database.Week = '(USER INPUT GOES HERE)'
    GROUP BY Distributor 
    ORDER BY Value desc

如何使WHERE 语句成为用户输入?例如.. 客户想要查看某个分销商的给定值,但在客户选择的周/月/年中。

问候

【问题讨论】:

  • 整个 where 子句需要是用户输入还是只是 where 子句中的值?
  • 这些值应该是用户输入的。假设给用户一个下拉菜单,他可以在其中选择 1-52 周,然后它将数字实现到该 sql 语句中。选择第 32 周 -> WHERE Test_Database.Week = '32'

标签: php sql sql-server filter user-input


【解决方案1】:
 You can do that simply by introducing if else statement
 $where  = "";
 //receive filter option  example $_GET['week']  
  //Do some sanitizing for $_GET['week']
  if ($_GET['week']) {
  $where  =  "WHERE Test_Database.Week = $_GET['week']"
 } else if (somecondition) {
  $where  = "some query";
  }

//可以通过连接$where来添加多个条件,但要确保where不重复

$query = "SELECT TOP 10 Test_Database.Distributor, Test_Database.Value
FROM Test_Database
$where  
GROUP BY Distributor
ORDER BY Value desc "

【讨论】:

  • 这确实看起来像我正在寻找的解决方案!这可能要求很多,但无论如何我都会这样做。我如何将其实现为某种可用的 HTML。 ?
  • 按照以下用户的建议,请注意用户的输入。您必须运行查询并获得结果。根据结果​​,您可以绘制 HTML 表格或您喜欢的任何其他格式
【解决方案2】:

我不确定,但也许你可以试试。

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

在选择页面中发布此文本框值并将该值设置在关闭位置。

【讨论】:

  • 我正在寻找能够以某种方式拉出客户端指定周的 SQL/PHP 语句
【解决方案3】:

sql查询中不应该有来自用户的任何数据

没有通过过滤器

sql-injection 不是空字

如果你没有清除 $_GET['week'] 的话,sql 中就没有它

【讨论】:

  • 从 1 到 52 的周数已在 Test_Database.Week 中声明。我只想知道客户/用户如何在它们之间进行选择。
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2014-09-28
  • 2013-04-16
  • 2011-05-18
  • 2011-01-21
相关资源
最近更新 更多