Здравствуйте! 8 ноября 2011 г. 18:16 пользователь Ivan Petrov <[email protected]> написал: > Заспорили мы тут с некоторыми товарищами. ... > > В итоге пришли вот к такому синтаксису. > > SELECT > * > FROM > table > WHERE > id = <%= $id %> > > где $id - именованный параметр переданный запросу. > > > Ну или даже так: > > SELECT > % if ($type eq 'count') { > COUNT(*) AS count > % } else { > * > % } > FROM > table > WHERE > sid = 123 > % if ($filter->filter1) { > AND field1 = <%= $filter->filter1 %> > % } > % if ($filter->filter2) { > AND field2 = <%= $filter->filter2 %> > % } > > Получается более изящно и сильно более гибко, однако цена этому в > примерно в полтора-два раза бОльшее время на парсинг. Впрочем для > сложных SQL оно сравнимо (у старого парсера оно оосло в зависимости от > сложности, тут слабо зависит). > ... > Замечания, предложения крайне интересны :)
- Человек который строит запросы так, вынужден постоянно помнить про SQL-Injection, а значит помнить про то, откуда именно берется каждый используемый в шаблоне скаляр. - В таком шаблоне возможно писать логику приложения, если возможно значит обязательно это кто-то сделает (та же проблема существует с HTML-шаблонизаторами) - О взаимозаменяемости баз данных можно забыть Это на вскидку, что вспомнилось, когда читал. -- Vladimir Timofeev <[email protected]> -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
