URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 8150
[ Назад ]

Исходное сообщение
"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"

Отправлено medexpert , 21-Дек-18 10:42 
Здоровья Всем!
Столкнулся с проблемой второй раз:
1. На хостинге обновили perl - не смогли разобраться, попросил откатить (перенести на старый сервер).
2. На локальной машине умер диск с 8-кой. Поставил 9.6 и проблема возникла опять - теперь надо разбираться.

Поле MySQL два знака c UNSIGNED ZEROFILL.

Выводит:
site.com/catalog.pl?country=2

Должно быть:
site.com/catalog.pl?country=02

Сайт старый. "Никогда такого не было, и вот опять" :)
Может кто-то сталкивался? Какие мысли?


Содержание

Сообщения в этом обсуждении
"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено михалыч , 21-Дек-18 13:32 
>[оверквотинг удален]
> на старый сервер).
> 2. На локальной машине умер диск с 8-кой. Поставил 9.6 и проблема
> возникла опять - теперь надо разбираться.
> Поле MySQL два знака c UNSIGNED ZEROFILL.
> Выводит:
> site.com/catalog.pl?country=2
> Должно быть:
> site.com/catalog.pl?country=02
> Сайт старый. "Никогда такого не было, и вот опять" :)
> Может кто-то сталкивался? Какие мысли?

может это не perl виноват, а mysql?
как select происходит?


"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено medexpert , 21-Дек-18 14:18 
>[оверквотинг удален]
>> возникла опять - теперь надо разбираться.
>> Поле MySQL два знака c UNSIGNED ZEROFILL.
>> Выводит:
>> site.com/catalog.pl?country=2
>> Должно быть:
>> site.com/catalog.pl?country=02
>> Сайт старый. "Никогда такого не было, и вот опять" :)
>> Может кто-то сталкивался? Какие мысли?
> может это не perl виноват, а mysql?
> как select происходит?

Код для регионов (максимально сократил) - проблема одна.


sub region {
my $return;
$text_quest = "
  SELECT region_id, $DATA{'LANGUAGE'}_region_name
  FROM address_region
  WHERE
  id_country = $country AND
  region_act > 0
  GROUP BY region_id
";
$sth = $dbh->prepare($text_quest);
$sth->execute();

if ($sth->err) {
  $return .= "Ошибка catalog_region_cat " . $sth->errstr;
}
    
$sth->bind_col( 1, \$region_id_tmp );
$sth->bind_col( 2, \$name_tmp );
    
while ( $sth->fetch ) {

# Костыль для решения, но таких мест много...
#     if ($region_id_tmp =~ /^\d$/) {
#        $region_id_tmp = '0' . $region_id_tmp;
#     }
    
  $return .= "<p><a title=\"$title_tmp\"   href=\"http://$DATA{'LANGUAGE'}.$DATA{'HOST_NAME'}/$_[1]?country=$country®ion=$region_id_tmp\"><span>$name_tmp</span></a></p>\n";

}
$sth->finish();
return $return;
}



"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено Аноним , 21-Дек-18 15:09 
country=$country®ion=$region_id_tmp

WTF ??


my $val = 2;
$val = sprintf("%02d", $val);
print $val;

sprintf уже не моден ?


"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено михалыч , 21-Дек-18 19:17 
действительно, что за фигня ??
присоединяюсь, но вежливо - WTF(lood) ))

если хочется использовать метод fetch()


    if ($sth->err) {
        $return .= "ERROR " . $sth->errstr;
    }
    else {
        while ( my $row = $sth->fetch() ) {
            $return .= "<p><a title=\"$row->[1]\" href=\"http://site/?country=$row->[0]\"><span>$row->[1]</span></a></p>\n";
        }
    }

    $sth->finish();
    return $return;


это, разумеется, чисто для примера

"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено ACCA , 29-Дек-18 00:12 
[...]
> $return .= "<p><a title=\"$row->[1]\" href=\"http://site/?country=$row->[0]\"><span>$row->[1]</span></a></p>\n";

Ты бы ему лучше объяснил, что $sth->bind_col - это напрашиваться на неприятности.


"Debian 9.6 - perl 5.24.1 - UNSIGNED ZEROFILL"
Отправлено михалыч , 31-Дек-18 08:42 
> [...]
>> $return .= "<p><a title=\"$row->[1]\" href=\"http://site/?country=$row->[0]\"><span>$row->[1]</span></a></p>\n";
> Ты бы ему лучше объяснил, что $sth->bind_col - это напрашиваться на неприятности.

ну вот, ты ему уже и объяснил ))

а с другой стороны - это его неприятности,
какое нам дело до этого дела ))