0

ユーザーが前のページで選択した一連のチェックボックスに基づいて、PHP PDO クエリを作成しようとしています。

したがって、フォームに次のチェックボックスがあります。

<input type="checkbox" name="websites[]" value="one" id="one">
<input type="checkbox" name="websites[]" value="two" id="two">
<input type="checkbox" name="websites[]" value="three" id="three">

送信したら、ユーザーが選択したチェックボックスに基づいて、pdo クエリとクエリ パラメータを作成します。ただし、それらはすべて 1 つのクエリに含まれている必要があります。チェックボックスが $_POST['website'] 配列に保存されることはわかっていますが、それを取得してクエリに入れるにはどうすればよいですか? たとえば、ユーザーが 1 つと 3 つだけを選択した場合、データベース テーブルからそれらのフィールドのみを選択したいとします。

$results = $_POST['websites'];

$query = " 
    SELECT 
        one,
        three
    FROM 
        table
"; 

どうすれば上記を行うことができますか?

4

1 に答える 1

2

まず、許可されたフィールドのホワイトリストを使用して、SQL インジェクションを回避する必要があります。次に、送信されたすべてのエントリをチェックして、ホワイト リストに存在するかどうかを確認し、存在する場合はクエリに追加する必要があります。

次のようなものです:

$allowed_fields = array(...);
$fields = array();
// only checked fields are sent to the server
foreach ($_POST['websites'] as $value)
{
  if (in_array($value, $allowed_fields))
  { 
    $fields[] = $value;
  }
}

$query = 'SELECT `' . implode('`, `', $fields) . '` FROM table';
于 2013-06-06T14:39:59.023 に答える