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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ругается на execute, не могу понять в чем ошибка 
:(
    Опции темы
ilya9339
Дата 7.2.2012, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Решил написать форум, ниже изложена функция которая печатает сообщения в теме.


Код

sub print_topic {
  my ($id_section, $id_topic) = @_;
  my $ds = 'DBI:mysql:'.$DATA{'DB'}.':'.$DATA{'HOST'};
  my $db = DBI->connect($ds, $DATA{'LOGIN'}, $DATA{'PASSW'});
  if (!$db) {
    print "connect-type: text/html\n\n";
    print "Ошибка ДБ";
    exit();
  }
  $db->do("SET NAMES utf8");

  my $topic_names_get = $db->prepare("SELECT id_user, name, status FROM topic_names WHERE id_topic=$id_topic");
  $topic_names_get->execute();
  if (!$topic_names_get->err){
    my @topic_names = $topic_names_get->fetchrow_array();
    $topic_names_get->finish();

    my $section_names_get = $db->prepare("SELECT name FROM section_names WHERE id_section=$id_section");
    $section_names_get->execute();
    if (!$section_names_get->err) {
      my $section_names = $section_names_get->fetchrow_array();
      $section_names_get->finish();
      my @id_user;
      my @user;
      my $count = 0;
      my $all_user_get = $db->prepare("SELECT id_user, user FROM user");
      my $all_user_get->execute();

      if (!$all_user_get->err){
        while (my @user_take = $all_user_get->fetchrow_array()) {
          $id_user[$count] = $user_take[$count];
          $user[$count] = $user_take[$count+1];
        }
        $all_user_get->finish();
        $db->disconnect;

        my $ds2 = 'DBI:mysql:'.$DATA{'DB2'}.':'.$DATA{'HOST'};
        my $db2 = DBI->connect($ds2, $DATA{'LOGIN'}, $DATA{'PASSW'});
        if (!$db2) {
          print "connect-type: text/html\n\n";
          print "Ошибка ДБ2";
          exit();
        }
        $db2->do("SET NAMES utf8");
        my $topic_get = $db2->prepare("SELECT * FROM topic$id_topic");
        $topic_get->execute();
        if (!$topic_get->err) {
          while (my @topic = $topic_get->fetchrow_array()) {
            if ($topic[3] eq "v"){
              my @mass = split(/\n/, $topic[2]);
              print "<p>\n<table class=\"msg\">\n";
              print "<tr><td class=\"msg\">\n";
              print "<div class=\"dialog-round\"><span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span><div>";
              print "<p class=\"msg\">\n";
              foreach my $var (@mass) {
                print $var."<br>\n";
              }
              print "</p>\n";
              print "</div><span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span></div>";
              print "</td></tr>\n<tr><td class=\"aboute\">\n";
              print "<div class=\"dialog-round\"><span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span><div>";
              print "<table class=\"writer\">\n<tr><td class=\"writer\">Автор:";
              my $nik;
              for ($nik=0;$nik<@id_user;$nik++){
                if ($id_user[$nik] == $topic[1]) {
                  print $user[$nik];
                  last;
                }
              }
              print "</td>\n";
              if ($user[$nik] eq cookie("loginn")) {
                &action_change_form ($topic[3]);
              }
              print "<td class=\"data\"> Дата: $topic[4]</td></tr>\n</table>\n";
              print "</div><span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span></div>";
              print "</td></tr>\n";
              print "</table>\n</p>\n";
            }
          }
        }
        else {
          print "Ошибка выборки сообщений юзеров";
          exit();
        }
      }
      else {
        print "Ошибка выборки сообщений темы";
        exit();
      }
    }
    else {
      print "Ошибка выборки из section_names";
      exit();
    }
  }
  else {
    print "Ошибка выборки топика из topic_names";
    exit();
  }
}



Вроде бы написано все правильно но серв выругивается на запрос:

Код

my $all_user_get = $db->prepare("SELECT id_user, user FROM user");
my $all_user_get->execute();


Код

 msg.pl: Can't call method "execute" on an undefined value at Z:/home/mytry.ru/lib/Forum.pm line 375., referer: http://mytry.ru/cgi-bin/book.pl?section=1


Вроде бы все правильно, в упор ошибки не вижу, пред идущие два запроса выполняет нормально, если SQL запрос выполняю через phpmyadmin
выборка нормально работает, а execute() не пашет.
Прошу помочь, извиняюсь за многобукоф.
PM MAIL   Вверх
arto
Дата 7.2.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



$db->prepare("SELECT id_user, user FROM user") or die $db->errstr;
PM MAIL ICQ   Вверх
ilya9339
Дата 7.2.2012, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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


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

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


 




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


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

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