MySQL, Perl-скрипт зависает при получении данных

0

Привет, у меня есть этот код. мои скрипты perl зависают где-то в разделе @row. Я напечатал следующий запрос, и он работает в SQL.

Почему он висит?

foreach $device (...)

        $sth2 = $dbh->prepare(qq|SELECT DISTINCT S,`W(m)`,`L(m)`,V FROM `$SQL_TABLE_NAME` WHERE DEVICE='$device'| );
        $sth2->execute(  );
        my %TEMP = ();
        while ( my @row = $sth2->fetchrow_array(  )) 
        {
            $TEMP{S}{$row[0]} = 1;
            $TEMP{W}{$row[1]}       = 1;
            $TEMP{L}{$row[2]}       = 1;
            $TEMP{V}{$row[3]}     = 1;

        }
  • 0
    Я обнаружил, что, изменяя порядок извлечения переменных S и V, исправляет мой сценарий ... что дает ...
Теги:

3 ответа

0

Кстати, лучше использовать заполнители:

$sth2 = $dbh->prepare(qq|SELECT DISTINCT S,`W(m)`,`L(m)`,V FROM `$SQL_TABLE_NAME` WHERE DEVICE= ?| );
$sth2->execute($device);
0
my $select_line = qq|SELECT DISTINCT S,`W(m)`,`L(m)`,V 
 FROM `$SQL_TABLE_NAME` 
 WHERE DEVICE='$device'|;

Вы пробовали распечатать $select_line, а затем запустить его непосредственно в mysql?

my $sth2 = $dbh->prepare( $select_line ) 
 or die $DBI::errstr.' at my query: $select_line\n';
  • Добавьте or die $DBI::errstr.' at my query: $select_line', чтобы проверить правильность вашего синтаксиса.
  • Добавьте в die $sth2->errstr if $sth2->err; после вашего времени:

    while (fetch) {

    //материал здесь с строками

    } die $sth2- > errstr, если $sth2- > err;

  • Обзор CPAN DBI docs @http://metacpan.org/pod/DBI

0

У вас, похоже, есть синтаксическая ошибка в запросе (VFROM, а не V FROM).

Если запрос завершился неудачно, нет результата для извлечения строки из. Возможно, вы захотите создать некоторую обработку ошибок в своем коде.

  • 0
    извините, это была ошибка вставки, просто чтобы сделать мои переменные общими ... все еще есть проблемы
  • 0
    Принцип действует, вы проверяете, получили ли вы результат из этого запроса, прежде чем пытаться прочитать набор результатов?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню