基于复选框构建SQL查询

时间:2013-07-03 22:31:32

标签: php sql checkbox where

假设我有一个包含30个与音乐流派对应的复选框的表单(它提交给PHP表单处理程序)。

我有一个有类型字段的艺术家表。有关构建符合以下行的查询的最佳实践是什么:

选择姓名FROM艺术家WHERE genreId = 1或genreId = 2 OR。 。 。等等。从复选框中选择genreId。

我知道我可以在PHP中动态构建我的WHERE子句,但我习惯使用预准备语句和存储过程。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可能希望在where子句中使用IN(),如下所示:

WHERE genreId IN (1,2,3)

不幸的是,以参数化的方式使用它确实不是一个好的解决方案。你只需要去上学:

$query = 'SELECT ... WHERE genreId IN (' . implode(',', $genreId_array) . ')';

我想虽然你可以做这样的事情来建立一个参数化的方法:

$query = 'SELECT ... WHERE genreId IN (';
$array_length = count($genreId_array);
for ($i = 0; $i < $array_length; $i++) {
    $query .= '?,';
}
$query = rtrim(',',$query) . ')';