0

我被分配了这个任务,通过用户输入对我当前的 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语句成为用户输入?例如.. 客户想要查看某个分销商的给定值,但在客户选择的周/月/年。

问候

4

3 回答 3

0

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

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

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

于 2013-01-30T12:24:47.557 回答
0
 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 "
于 2013-01-30T12:31:53.920 回答
0

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

没有通过过滤器

sql-injection 不是空词

所以如果你没有清除它,sql 中没有 $_GET['week']

于 2013-01-30T12:53:41.113 回答