我正在尝试根据用户在上一页选择的一组复选框来构建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
";
我怎样才能做到?
答案 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';