Предположим, у меня есть форма, которая имеет 30 флажков, которые соответствуют музыкальным жанрам (он отправляется в обработчик формы PHP).
У меня есть таблица художников, в которой есть жанр. Каковы наилучшие методы построения запроса, который будет вести себя так:
Выберите имя FROM artist WHERE genreId = 1 OR genreId = 2 OR. , , и т. д., где genreId выбраны из флажков.
Я знаю, что могу динамически строить предложение WHERE в PHP, но у меня есть привычка использовать подготовленные заявления и хранимые процедуры. Что мне делать?
Вы, скорее всего, захотите использовать 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) . ')';