Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не возвращается массив хешей 
V
    Опции темы
igorold
Дата 17.5.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Код

my $DebugFileName = 'makeout.log';
open (dfd, ">> $DebugFileName") or die ("Error opening log file\n");
my $DebugFile = *dfd;

    my $query="SELECT Events.i, Events.CreationTime, Events.EventTime, People.Realname, Events.PlaceStr, Types.TypeName, Events.RegsCause, Events.Theme, Events.Description, Events.Reason, Events.Job, Events.Job2, Events.Flag, CatPlace.Nai, Adress.Nai as Adress ";
    $query.=", Types.i as TypesI, Types.Alias as TypesAlias ";
    $query.="FROM People, Types, Adress, Events ";
    $query.="left join CatPlace on CatPlace.i=Events.Place ";
    $query.="WHERE Events.Creator=People.i AND Events.Type=Types.i AND Adress.i=Events.AdresID ";
    $query.="AND Events.Flag<>'0' ";
    $query.="AND Events.Exported='0' ";
    $query.="ORDER BY CreationTime DESC";

       my $result = GetHashes($dbh, $query);
        my $List   = "Отчет о событиях - комплекс 2\n";
        $List     .= "Даты: \n";
        $List     .= "Новые: on\n";
        while (my ($recindex, $recvalue) = each (%$result))
        {
             print $DebugFile "recindex=$recindex\n";
            $List.="\n$recindex\n";
            my ($key, $value);
            while (($key, $value) = each (%$recvalue))
            {
                $List.="<$key|$value>";
            }
        }


sub GetHashes
{
    my $dbh = shift;
    my $Query = shift;
    my $sth=$dbh->prepare($Query);
    $sth->execute();
    return $sth->fetchall_hashref({});
}



по данному запросу возвращается массив строк (если этот запрос в mysql выполнить)
т.е. в цикле я ожидаю перебор хешей имя поля - значение, но цикл не выполняется, 
кто может подсказать где ошибка?


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
JAPH
Дата 17.5.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 3
Всего: 23



fetchall_hashref возвращает массив хэшей, так? А в коде это будто бы хэш хэшей.
Код

for (my $recindex = 0; $recindex < @$result; $recindex++) {
      print $DebugFile "recindex=$recindex\n";    
      $List.="\n$recindex\n";    
      while (my ($key, $value) = each %{$$result[$recindex]}) {    
          $List.="<$key|$value>";    
      }    
}


Это сообщение отредактировал(а) JAPH - 17.5.2007, 17:44


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
ZeeLax
Дата 17.5.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: нет
Всего: 88



А разве fetchall_hashref не требует указания ключевого поля?

Добавлено через 1 минуту и 23 секунды
Цитата(JAPH @  17.5.2007,  20:43 Найти цитируемый пост)
fetchall_hashref возвращает массив хэшей

fetchall_hashref возвращает хэш хэшей


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
igorold
Дата 18.5.2007, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Всем спасибо за участие ... вот так заработало ...  smile 

Код


..................

        my $result = GetArrayOfHashes($dbh, $query);
        for (my $Count = 0; $Count < scalar(@{$result}); $Count++)
        {
            my $Hash = $result->[$Count];
            my $recindex = $Hash->{"i"};
            RunQuery($dbh, "UPDATE Events SET Exported='1' WHERE i='$recindex'");
            print $DebugFile "recindex=$recindex\n";
            $List.="\n$recindex\n";
            while (my ($key, $value) = each %{$Hash})
            {
                $List.="<$key|$value>";
            }
        }
............................


sub GetArrayOfHashes
{
    my $dbh = shift;
    my $Query = shift;
    my $sth=$dbh->prepare($Query);
    $sth->execute();
    return $sth->fetchall_arrayref({});
}






--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.