【发布时间】:2021-04-14 10:32:45
【问题描述】:
我正在尝试使用选择框过滤用户的一些输入。我正在考虑是否有更好的方法来做到这一点。
if(isset($_POST['action']))
{
$sql = "SELECT * FROM occasions WHERE naam IS NOT NULL";
if(isset($_POST['merk'])){
$merk = $_POST['merk'];
$merkQuery = implode(',', array_fill(0, count($merk), '?'));
$sql .= " AND merk IN(".$merkQuery.")";
}
if(isset($_POST['brandstof'])){
$brandstof = $_POST['brandstof'];
$brandstofQuery = implode(',', array_fill(0, count($brandstof), '?'));
$sql .= " AND brandstof IN(".$brandstofQuery.")";
}
//We prepare our SELECT statement.
$statement = $pdo->prepare($sql);
if(isset($_POST['merk'])){
//Execute statement.
$statement->execute(array_merge(array_values($merk)));
}
if(isset($_POST['brandstof'])){
//Execute statement.
$statement->execute(array_merge(array_values($brandstof)));
}
if(isset($_POST['merk']) && isset($_POST['brandstof']))
{
$statement->execute(array_merge(array_values($merk), array_values($brandstof)));
}
else
{
$statement->execute();
}
}
因为如果有很多选择框需要过滤,代码会变长。我想知道是否有更好的方法来过滤多个选择框。
这里是一个例子:link
【问题讨论】:
-
是的,有更好的方法
-
我们能看到您尝试执行的准备好的查询吗?
-
如果您的选择被命名为
name="data[brand]"等,那么您只需传递$_POST['data']。但是对于您的场景,准备是不同的。所以也许可以使用data下的键。 -
@RiggsFolly 我现在已经添加了准备好的查询
-
现在更有意义了