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

Модератор: Модераторы разделов

Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

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

Сообщение gcc »

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

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

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



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

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

$self->{SQL}->{LIKE} = join (" AND ", map { "text LIKE ".$dbh->quote('%'.$_.'%') } @search );
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

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

Сообщение diesel »

напечатай query, попробуй выполнить его просто в mysql и увидишь что не так ...
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

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

Сообщение gcc »

сделал так:

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

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


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

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

$sql = 'SELECT count(*) FROM table where'.$self->{SQL}->{LIKE};


или так:

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

$sql = qq(SELECT count(*) FROM table where'.$self->{SQL}->{LIKE});


еще нашел модуль
http://search.cpan.org/~mstrout/SQL-Abstra...SQL/Abstract.pm
Спасибо сказали: