Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как выполнить подстановку


Автор: Bulat 18.6.2008, 13:06
Что-то я поковырялся, но так пока и не нашел решения.

Допустим у нас есть тривиальный запрос:

Код

SELECT t.id FROM t
WHERE t.id = ?


в данном случае все просто либо execute(5), либо bind_param(1,5)

Но если у меня запрос немного иной

Код

SELECT t.id FROM t
WHERE t.id in (?)


т.е. может быть и два и три значения внутри скобок. подставлять что-то типа join(',', @arr) - он сработает только на первый элемента массива. А execute_array и bind_param_array для этого не предназначены, вроде бы smile

Вообщем, пока так и не нашел решения, может кто сталкивался?? smile

Автор: yura_nev 18.6.2008, 13:14
$sql = qq{SELECT t.id FROM t WHERE t.id in (?}.',?'x$#arr.qq{)} if(@arr);
... execute(@arr);

Автор: Bulat 18.6.2008, 13:34
Цитата(yura_nev @  18.6.2008,  13:14 Найти цитируемый пост)
$sql = qq{SELECT t.id FROM t WHERE t.id in (?}.',?'x$#arr.qq{)} if(@arr);
... execute(@arr); 

Это по сути дела все равно, что "на лету". Я ищу способ более изящный, без какого либа вмешательства перлового кода в сам запрос smile

Автор: ginnie 18.6.2008, 13:39
Уважаемый Bulat, к сожалению, с конструкцией IN () без вариантов, можете не искать.

Автор: Bulat 18.6.2008, 15:38
ginnie, Да я в принципе знаю, но надеялся, что может кто-нить все-же как-нить... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)