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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ARRAY, ARRAY(0x1a8c4dc) 
:(
    Опции темы
MoXxX
Дата 24.9.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посылаю запрос к БД и тутже вывожу значение переменной @query:
Код

my @query = $db_->get_gamers_where("name=$login");
print @query;

в классе используется следущая ф-ция для обработки команды:
Код

    my $self = shift;
    my $attr = $AUTOLOAD;
    $attr =~ s/.*:://;
    return unless $attr =~ /[^A-Z]/;
    my ( $q, $table, $where ) = split('_', $attr);
    if (( $q eq 'get' ) && ( $where ne 'where' )) {
        if ( @_ ) {
            my $args = shift;
            my %ReturnHash = ();
            $dbh = DBI->connect( "DBI:mysql:" . Data::config()->{DB_NAME},
                                    Data::config()->{DB_LOGIN},
                                    Data::config()->{DB_PASS} )
                      or die DBI->errstr;
            my $end = scalar( @{ $args } );
            for( my $i=0; $i<$end; $i++ ) {
                my $col = $args->[$i];
                my $sth = $dbh->prepare( "SELECT $col FROM $table" );
                $sth->execute;
                while ( my $ref = $sth->fetchrow_hashref ) {
                    push @{ $col }, $ref->{ $col };
                }
                $ReturnHash{ $col } = \@{ $col };
            }
            return \%ReturnHash;
        }
    }

    if (( $q eq 'get' ) && ( $where eq 'where' )) {
        if ( @_ ) {
            my $expr = shift;
            $dbh = DBI->connect( "DBI:mysql:" . Data::config()->{DB_NAME},
                                    Data::config()->{DB_LOGIN},
                                    Data::config()->{DB_PASS} )
                      or die DBI->errstr;
            my $sth = $dbh->prepare( "SELECT * FROM $table WHERE $expr" );
            $sth->execute;
            #while ( my $ref = $sth->fetchrow_array ){
            while ( my $ref = $sth->fetchrow_hashref() ) {
                push @ary, $ref;
            }
            return \@ary;
       }
    }


в значении переменной @query выводится ARRAY(0x1a8c4dc)
Вопрос - как мне получить запрашиваемые данные из таблицы?

Это сообщение отредактировал(а) MoXxX - 24.9.2007, 23:45
PM   Вверх
korob2001
Дата 25.9.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Метод возвращает ссылку на массив, а не реальный массив. Вобщем попробуй разыменовать её:
Код

my $query = $db_->get_gamers_where("name=$login");
print @$query;

Хотя теперь ты наверное увидешь что-то в этом роде:
HASH(0x1a8c4dc)HASH(0x1a7d4cc)HASH(0x1d8d2dc)HASH(0x2a5c4dc)HASH(0x6a8dcdc)
так как массив заполняется ссылками на хеши, вот здесь:
Код

           #while ( my $ref = $sth->fetchrow_array ){
            while ( my $ref = $sth->fetchrow_hashref() ) {
                push @ary, $ref;
            }

их тоже нужно будет разименовать, либо раскоментировать while, где выборка направляется в массив и соответсвенно закоментировать второй while:
Код

            while ( my $ref = $sth->fetchrow_array ){
            #while ( my $ref = $sth->fetchrow_hashref() ) {
                push @ary, $ref;
            }


Это сообщение отредактировал(а) korob2001 - 25.9.2007, 00:55


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
MoXxX
Дата 25.9.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Написал - нечего не выводит, тоесть переменная - пустая :\\\

P.S. Соединение с БД есть (вставка ряда работает)

Это сообщение отредактировал(а) MoXxX - 26.9.2007, 17:09
PM   Вверх
djkostya
Дата 17.10.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 1
Всего: 2



use Data::Dumper;
print Dumper(@array);



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


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

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


 




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


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

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