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 查询和查询参数——尽管它们都必须在一个查询中。我知道任何选中的框都将存储在我的 $_POST['website'] 数组中,但是我怎样才能将其放入查询中?例如说用户只选择了一个和三个,然后我只想从我的数据库表中选择这些字段:

$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 回答