twinНичего не извращают, если я правильно понимаю о чём речь. Вот сравни псевдокод (на самом деле, это мой велосипед и оба варианта возможны, но использую первый):
$input = array(
'var1'=>'somedata',
'var2'=>'somedata2',
);
$output = $this->db->get('
select
*
from
#tbl_name#
where
`field1`=:var1: or
`field2`=:var2: or
`field3`<>:var1:
',$input);
и
$output = $this->db->get('
select
*
from
#tbl_name#
where
`field1`="'.$this->db->escape($input['var1']).'" or
`field2`="'.$this->db->escape($input['var2']).'" or
`field3`<>"'.$this->db->escape($input['var1']).'"
');
Оба варианта вроде как читаемы, но первый существенно короче и без лишнего мусора.
А вот для сравнения код из одного из поддерживаемых сайтов, где используются не именованные плейсхолдеры:
$db->Execute("UPDATE poll SET title = ?,data = ?,
rubric = ?,date = ?,count = ?,ontop = ?,img = ?,
subrubric = ?,url = ?,smalldata = ?,slider1 = ?,commentbox = ? WHERE id = ?",
array($form->title,$form->data,
$form->rubric,$form->date,$form->count,$form->ontop,$Image->fname,$form->subrubric,
$form->url,$form->smalldata,$form->slider1,$form->commentbox,$eid));
Честно, я через раз путаюсь что куда подставляется.