привет, помогите разобраться в следуйщем:
есть сервер:
use DBI;
use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI
-> dispatch_to('ClassName')
-> handle;
package ClassName;
sub sms {
my $class = shift;
my $envelope = pop;
return SOAP::Data->name('text'=>$envelope->{'text'});
}
exit;
хочу сделать проверку:$query ="select name from table where name='$text'";
$sth=$dbh->prepare($query);
$sth->execute();
if ($sth->rows)
{
возвращал клиенту следущее: Такого $text в базе нет
}
else{
$text существует в базе
}Как интерировать эту проверку правельно ?
Заранее благодарен
}
>Как интерировать эту проверку правельно ????
извините, я таких словей не знаю. что вы хотите?
вот как пробовал но что не так:my $text;
sub sms {
my $class = shift;
my $envelope = pop;
$text= SOAP::Data->name('text'=>$envelope->{'text'});###############################
$query="select name from table where name='$text' ";
$sth=$dbh->prepare($query)";
$sth->execute();
################################
if ($sth->rows)
{
$text= SOAP::Data->name('text'=>$envelope->{'text'})."есть такой";
}else{
$text= SOAP::Data->name('text'=>$envelope->{'text'})."нету";
}
return $text;
}
exit;
>вот как пробовал но что не так:а что не так то? слово то можно расшифровать "интерировать "
вообщето у меня 3 минуты и конец рабочего дня :)))
спасибо за помощь и приятных выходных
>[оверквотинг удален]
>################################
> if ($sth->rows)
> {
> $text= SOAP::Data->name('text'=>$envelope->{'text'})."есть такой";
> }else{
> $text= SOAP::Data->name('text'=>$envelope->{'text'})."нету";
> }
>return $text;
>}
>exit;я бы сделал так:
$rows_affected = $sth->execute();if ($rows_affected=~m/\d/)
{}
else
{}
cito-to ne tak , smotri:
use DBI;
use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI
-> dispatch_to('ClassName')
-> handle;
package ClassName;
sub sms {
my $class = shift;
my $envelope = pop;
my $text= SOAP::Data->name('text'=>$envelope->{'text'});
my $server = '....';
my $db = 'database';
my $username = '....' ;
my $password = '.....' ;$query="select name from table where name='$text' ";
$sth=$dbh->prepare($query);
$row_affected= $sth->execute();if ($row_affected=~m/\d/)
{
$text= SOAP::Data->name('text'=>$envelope->{'text'})."esti takoi";
}else{
$text= SOAP::Data->name('text'=>$envelope->{'text'})."netu takogo";
}
return $text;
}
exit;толи не вазврощает $text толи не доходит в $sth, то есть не выдает результата
>cito-to ne tak , smotri:
>толи не вазврощает $text толи не доходит в $sth, то есть не
>выдает результатая тебе дам универсальный пару советов, которые сделают из тебя первокласного перл(и не только) программиста, конечно если ты им будешь следовать :)
всегда проверяй значения возвращаемые функциями.
всегда веди лог, тем более при при отладке, и выводи туда все мало мальские значимые результаты.и тогда ты не будешь гадать, толи это толи то.
спасибо за советы
но все таки помоги в даном случее, горит
потом начну соблюдать ваши советы и не буду беспокоить по пустекам
зараннее благодарен
>спасибо за советы
>но все таки помоги в даном случее, горит
>потом начну соблюдать ваши советы и не буду беспокоить по пустекам
>зараннее благодаренизвини, тут тебе никто помочь не сможет, тут ты должен это сделать сам. что может быть проще
open(LOG, ">>", "/access_enable_write_apache/my.log");if(defined($sth)) {
print LOG "с sth все впорядке, смотри дальше\n";
}print LOG "rows: $row_count\n";
close(LOG);
в me.log ничего не пишиться
>в me.log ничего не пишитьсяif(defined($sth)) {
print LOG "с sth все впорядке, смотри дальше\n";
} else {
print LOG "с sth НЕ все впорядке, смотри здесь\n";
}
print LOG "rows: $row_count\n";что то определенно должно записаться. иначе у пользователя под которым ты работаешь нет прав записи в этом каталоге. дай их.