экранирвоать dbi prepare

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-01-04 15:44:10

не работает, пробовал по разному:

Код: Выделить всё

$sth = $dbh->prepare( "SELECT count(*) FROM table where $self->{SQL}->{LIKE}");
$sth->execute();

в других классах примерно так формируется:

Код: Выделить всё

$self->{SQL}->{LIKE} = join (" AND ", map { "text LIKE ".$dbh->quote('%'.$_.'%') } @search );
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: экранирвоать dbi prepare

Непрочитанное сообщение hizel » 2009-03-03 0:14:18

кашмарики : )
используй ORM
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-05 20:47:57

я решио проблему не помню как


а чем ОРМ лучше?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-06 14:35:21

ORM не плохое есть некотоыре хорошие вещи с ООП запросами...
вот я превел пример, не плохо

но зачем экономить на спичках?

если нужно сделать построение программного запроса, то можно через if else

и сделать нормально:

Код: Выделить всё

sub edit {
}
sub add {
}
ты настаиваешь на том чтобы использовать это? оно лучше, но не намного...

а тебя спасает это ORM?

Код: Выделить всё

package AddressBook::Controller::Address;
use strict;
use warnings;
use base qw(Catalyst::Controller::FormBuilder Catalyst::Controller::
BindLex');
sub add : Local Form('/address/edit') {
    my ($self, $c, $person_id) = @_;
    $c->stash->{template} = 'address/edit.tt2';
    $c->forward('edit', [undef, $person_id]);
}

sub edit : Local Form {
     my ($self, $c, $address_id, $person_id) = @_;
     my $address : Stashed;
     if(!$address_id && $person_id){
         # we're adding a new address to $person
         # check that person exists
         my $person = $c->model('AddressDB::People')->
                                      find({id => $person_id});
	          if(!$person){
	             $c->stash->{error} = 'No such person!';
	             $c->detach('/person/list');
	          }
         # create the new address
	          $address = $c->model('AddressDB::Addresses')->
	                                    new({person => $person});
	
     }
     else {
         $address = $c->model('AddressDB::Addresses')->
                                   find({id => $address_id});
         if(!$address){
             $c->stash->{error} = 'No such address!';
	            $c->detach('/person/list');
         }
     }
     if ($c->form->submitted && $c->form->validate){
	          # transfer data from form to database
         $address->location($c->form->field('location'));
         $address->postal ($c->form->field('postal' ));
         $address->phone    ($c->form->field('phone'    ));
         $address->email    ($c->form->field('email'    ));
         $address->insert_or_update;
         $c->stash->{message} =
             ($address_id > 0 ? 'Updated ' : 'Added new ').
                         'address for '. $address->person->name;
         $c->detach('/person/list');
   }
   else {
       # transfer data from database to form
       if(!$address_id){
            $c->stash->{message} = 'Adding a new address ';
       }

             else {
                 $c->stash->{message} = 'Updating an address ';
             }
             $c->stash->{message} .= ' for '. $address->person->name;
             $c->form->field(name => 'location',
                                  value => $address->location);
             $c->form->field(name => 'postal',
                                  value => $address->postal);
             $c->form->field(name => 'phone',
                                  value => $address->phone);
             $c->form->field(name => 'email',
                                  value => $address->email);
         }
     }
     sub delete : Local {
           my ($self, $c, $address_id) = @_;
           my $address = $c->model('AddressDB::Addresses')->
                                            find({id => $address_id});
           if($address){
     	         # "Deleted First Last's Home address"
     	         $c->stash->{message} =
     	               'Deleted ' . $address->person->name. q{'s }.
     	                     $address->location. ' address';
     	         $address->delete;
           }
           else {
     	         $c->stash->{error} = 'No such address';
           }
           $c->forward('/person/list');
     }
     1;
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: экранирвоать dbi prepare

Непрочитанное сообщение hizel » 2009-03-06 15:18:51

или ты работаешь только с перлом или ты работаешь с перл+sql , а это трудности в отладке и доп нагрузка на моск ;)
Последний раз редактировалось hizel 2009-03-06 15:26:16, всего редактировалось 1 раз.
Причина: на моск
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-06 17:29:55

ну я вот не могу рещить использовать DBI или DBIx::Class...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: экранирвоать dbi prepare

Непрочитанное сообщение hizel » 2009-03-06 17:53:21

я бы еще понял если бы вы выбирали из Rose::DBx DBIx::Class :-D
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-06 19:08:30

ну там написано что ORM работает медленно не много, там из СУБД идет через шаре мемори без многопоточности по-моиму...

говорят когда проект большой будет, то в этой "теории экономики" сложно изменить код... потомучто сразу не видно что делает код...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: экранирвоать dbi prepare

Непрочитанное сообщение hizel » 2009-03-06 19:15:40

пруфлинк дайте, кто такое говорит, я иму эти слова обратно в рожу забью
я сегодня злой
я сегодня уже потренировался на воидере
:)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-06 19:38:02

было дело, давно, но там опять таки 50 на 50

вот такой запрос разве легко будет написать на ORM?

Код: Выделить всё

    SELECT
    sum(rs.hits) as hits,
    sum(rs.hits * rs.price * o.percent*0.000001) AS hits_amount,
    0 as 'co_author'
    FROM ownership o
    LEFT JOIN read_stats rs ON rs.art = o.art 
        LEFT JOIN ownership o1 ON o1.art = o.art
        JOIN copyrights c ON c.person = o1.person 
    WHERE o.person = ? AND o.relation = ?    AND rs.time >= ? AND rs.time <= ?    AND c.user = ?
    AND o.percent != 0 AND o1.percent != 0 AND o.person = o1.person
    UNION ALL
    SELECT
    sum(rs.hits) as hits,
    sum(rs.hits * rs.price * o.percent*0.000001) AS hits_amount,
    1 as 'co_author'
    FROM ownership o
    LEFT JOIN read_stats rs ON rs.art = o.art 
        LEFT JOIN ownership o1 ON o1.art = o.art
        JOIN copyrights c ON c.person = o1.person 
    WHERE o.person = ? AND o.relation = ?    AND rs.time >= ? AND rs.time <= ?    AND c.user = ?
    AND o.percent != 0 AND o1.percent != 0 AND o.person <> o1.person
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: экранирвоать dbi prepare

Непрочитанное сообщение hizel » 2009-03-06 19:43:39

нет, не легко, в некоторых ОРМ этот запрос вообще не реализвать :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-07 5:17:28

ладно перехожу на DBIx::Class

слушай, а не достатки вообще есть у ORM?

я по гуглу прошелся - не нашел вообще...

скорее всего реально если тебе надо будет изменить не много таблицу или проабгрейдить все это, то не много проблем может быть или нет?

кстате, а ORM делает свои собственный запросы, ты можешь написать их штук 5, а она сделать 1 или 2 ... я только не помню может ли это DBIx::Class или какой-то дургой...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-07 23:51:28

там еще увидел что нету смысла строить один запрос, потому что кэширвоание не обработает если ты сделаешь один большой запрос с вложенными запросами и т.д.

это только Оракл может как-то обработаеть один запрос большой, лучше чем несколько маленьких из него...

я просто уже использую DBI, в общем хрен его знает, не могу решить как использовать...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: экранирвоать dbi prepare

Непрочитанное сообщение zg » 2009-03-08 7:04:10

ProFTP писал(а):не могу решить как использовать...
лучше грамотно :roll:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-08 23:06:01

а кто использовал Rose::DBx, DBIx::Class ?

в чем приемущество от Rose::DBx? я пока документацию не нашел нормальную...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: экранирвоать dbi prepare

Непрочитанное сообщение ProFTP » 2009-03-15 10:28:03

hizel писал(а):я бы еще понял если бы вы выбирали из Rose::DBx DBIx::Class :-D
не знаешь в чем разница между Rose::DBx DBIx::Class ? я видел что приемущественно на Жабе что-то вродебы RDBO...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение