Правильные запросы Perl DBI

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

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

Правильные запросы Perl DBI

Сообщение gcc »

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

sub page

{

## если ключ HTTP_X_FORWARDED_FOR определен
if ( $ENV{ HTTP_X_FORWARDED_FOR } ) {

   ## в переменную $ip записывается IP-адрес
   ## клиента, подключенного через прокси
   $ip = $ENV{ HTTP_X_FORWARDED_FOR};
} else {

   ## в противном случае запишем в $ip
   ## удаленный IP-адрес клиента
   $ip = $ENV{ REMOTE_ADDR };
}



($sec,$min,$hour,$mday) = localtime(time);

$ttt=time;

$idl=param("idl");



print << "[INFO2]";
  <TD WIDTH=20000 HEIGHT=600 valign="top" bgcolor="#FFFFFF"><p></p>
        <center> <p><font size="2" face="Verdana"> <b>Голосования</b> </font></p> </center>


[INFO2]



my $dbh2 = DBI->connect("DBI:mysql:database=sitesdj_db;host=, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;

#$castaway12


$sth2 = $dbh2->prepare("SELECT * FROM rdate  WHERE nickname=?");




#$sth->execute();


$dbh2->disconnect();


while ( ($rnum, $rnik, $rip, $rdat)
=$sth2->fetchrow() )

{







$curdat=$rdat+30000;


print "$rip";
print "$idl";


if (($rip=~/$ip$/i) && ($rnik=~/$idl$/i) && ($ttt <= $curdat)) {

print "awibka vremya menwe data";
exit;
}


if (($rip=~/$ip$/i) && ($rnik=~/$idl$/i) && ($ttt > $curdat)) {

print "v bazu";

## vstavlyaem v sazu

$nngolosov=$golosov+$castaway12;

$nnvsegog=$vsegog+1;

$nnsrednie=$nngolosov/$nnvsegog;





my $dbh = DBI->connect("DBI:mysql:database=sitesdj_db;host=, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;





my $result = $dbh->prepare("update rdate set nickname = ?, cdate = ? where ip = $ip") || die "axvxvxcvxcvxw";




$result->execute( $idl, $ttt );



$result->finish();



$dbh->disconnect();



print "vstavili - UPDATING";

exit;


}

else

{


## vstavlyaem v sazu
print "no login, no ip";


##########################################
##########################################
###            esli netu
###
###



print "v bazu";

## vstavlyaem v sazu

# $nngolosov=$golosov+$castaway12;
#
# $nnvsegog=$vsegog+1;
#
# $nnsrednie=$nngolosov/$nnvsegog;





my $dbh = DBI->connect("DBI:mysql:database=sitesdj_db; { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr;


#$result2 = $dbh->prepare("SELECT NOW()");

#$list = $result2->fetchrow_array ();


my $result = $dbh->prepare("INSERT INTO rdate (nickname,ip,cdate) VALUES (?,?,?)") || die "axvxvxcvxcvxw";

###$list="2008-03-03";


$result->execute( $idl, $ip, $ttt );



$result->finish();



$dbh->disconnect();

print "zapici ne bilo";
exit;
}

print "$rip";
print "$idl";



}

}



вопрос: почему не выполняеться вот этот блок? после else, если нуте в базе т овставить надо, он просто вырубаеться и ничего не пишет...
(сам блок без ничего выполняеться, INSERT!)

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

else

{


## vstavlyaem v sazu
print "no login, no ip";
...............



это голсование сделано с блокировакой айпи



UPD: сделал, вместо else вот это: if (($rip !~ /$ip/) && ($rnik !~ /$idl/) && (!(length($rdat)) ))
Спасибо сказали: