Добрый день уважаемые форумчане, глупый и наверное дилетантский вопрос но не могу никак найти внятного решения буду очень признателен за подсказки или направление в нужное русло в какую сторону двигаться. Вопрос такой есть хранимая процедуа на сервере MySQL с одним входящим параметром строковго типа variable SELECT * FROM table WHERE idtable IN (variable) и при вызове процедуры с одним значением все работает хорошо, но если вызвать процедуру с двумя значениями через запятую нн работает, собственно проблема в том что заранее не известно сколько будет значений подставляться в IN, как возможно решить эту проблему, может стоит написать функцию которая будет дробить входящую строку на несколько значений по разделителю или это можно сделать по другому. Заранее спасибо за советы
Думаю, подстановка строки с запятыми не прокатит по-любому, т.к. переменная и будет восприниматься как строка IN ("1,2,3"). Даже интересно стало, тоже поищу возможности. В SQL это решается разными способами http://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml#introduction Надо попробовать в MySQL. А какое макс. количество параметров ожидается?
Огромное спасибо за ссылку и за помощь Вы всегда отвечаете и помогаете интересными решениями. Параметров примерно 250 (на данный момент максимальное значение). На данный момент вынес запрос из хранимой процедуры в код, где склеиваю строку перед запросом, но думаю это не есть гуд поэтому продолжаю искать решение.
Да, 250 - это многовато. Просто мысль была передавать сразу максимальное количество параметров. Если значения нет, то NULL. У вас простая процедура, профита от переноса в MySQL не будет. И защита не нужна от инъекций, т.к. передаются ID-шники. Так что всё верно, собирайте строку запроса в PHP. (Правда, всё равно нужно удостовериться, что в список ID-шников не могут просочиться строки из какой-нибудь формы.)