PHP -构建PDO查询参数从多个复选框形式


PHP - Build PDO Query Parameters from multiple checkbox form

我正在尝试建立一个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['网站']数组,但我怎么能把它,并把它们在查询?例如,假设用户只选择了1和3,那么我想只从我的数据库表中选择这些字段:

$results = $_POST['websites'];
$query = " 
    SELECT 
        one,
        three
    FROM 
        table
"; 

我怎么能做到以上?

首先,您应该使用允许字段的白名单来避免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';