Почему мой запрос Perl DBI не возвращает никаких результатов в CGI-скрипте? - PullRequest
0 голосов
/ 05 февраля 2010

Я впервые использую DBI (и не долго запускал Perl [2 недели]) и не могу получить никаких результатов из базы данных Вот что у меня есть:

if( defined( $get{findAllPages} ) && defined( $post{ki} ) ){

   my ($database, $hostname, $port, $password, $user );

   $database = "#########";
   $hostname = "localhost";
   $password = "#########";
   $user = "###########";
   my $KI = $post{ki};

   # connect to the database
   my $dsn = "DBI:mysql:database=$database;host=$hostname;";
   my $dbh = DBI->connect($dsn, $user, $password);
   my $sth = $dbh->prepare("SELECT * FROM accounts WHERE KI = '" . $dbh->quote($KI) . "' ") or die "Could not select from table";
   $sth->execute();
   if( $sth->rows != 0 ) {
      my $ref = $sth->fetchrow_hashref();
      my $domain = $ref->{website};
      my $DB_username = $ref->{db_name};
      my $DB_password = $ref->{db_pass};
      $sth->finish();
      $dbh->disconnect();

      print "domian: " . $domain . "<br />\n";

      chomp(my $url = trim($domain));

В нынешнем виде он проверяет правильность KI, а затем проверяет количество строк, которое работает. Бит, который я не могу получить, это возвращение значений из массива;

my $ref = $sth->fetchrow_hashref();
my $domain = $ref->{website};
my $DB_username = $ref->{db_name};
my $DB_password = $ref->{db_pass};

Если кто-нибудь может сообщить мне, где я иду не так, это будет очень ценно.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2010

Попробуйте использовать обработку ошибок DBI , чтобы понять, что не так. См. Программирование Perl DBI, глава 4 (Обработка ошибок) или "Обработка ошибок DBI :: mysql" на Perlmonks для ссылок.

0 голосов
/ 14 февраля 2010

Что я часто делаю, когда не вижу, что происходит:

использовать Data :: Dumper;

my $ ref = $ sth-> fetch ();

печать Dumper $ ref;

и вы увидите макет структуры данных. Иногда дело в неправильной индексации массива или хэша.

...