PHP - 从多个复选框表单构建PDO查询参数

时间:2013-06-06 14:34:26

标签: php checkbox pdo

我正在尝试根据用户在上一页选择的一组复选框来构建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查询和查询参数 - 但它们必须全部在一个查询中。我知道任何复选框都会存储在我的$ _POST ['website']数组中,但是我怎么能把它放在查询中呢?例如,假设用户只选择了一个和三个,那么我只想从我的数据库表中选择那些字段:

$results = $_POST['websites'];

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

我怎样才能做到?

1 个答案:

答案 0 :(得分: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';