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を連結することで複数の条件を追加できますが、繰り返しない場所を確認してください

$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 に答える