假设我有一个包含30个与音乐流派对应的复选框的表单(它提交给PHP表单处理程序)。
我有一个有类型字段的艺术家表。有关构建符合以下行的查询的最佳实践是什么:
选择姓名FROM艺术家WHERE genreId = 1或genreId = 2 OR。 。 。等等。从复选框中选择genreId。
我知道我可以在PHP中动态构建我的WHERE子句,但我习惯使用预准备语句和存储过程。我该怎么办?
答案 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) . ')';