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