我正在尝试建立一个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';