0

我是第一次使用 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};

如果有人可以让我知道我哪里出错了,将不胜感激。

4

2 回答 2

2

尝试使用DBI的错误处理来查看问题所在。请参阅Perl DBI 编程,第 4 章(错误处理)或Perlmonks 上的“DBI::mysql 错误处理”以获取参考。

于 2010-02-05T08:37:34.160 回答
0

当我看不到正在发生的事情时,我经常做的事情是:

使用 Data::Dumper;

我的 $ref = $sth->fetch();

打印自卸车 $ref;

你会看到数据结构布局。有时这是对数组或散列的不正确索引的问题。

于 2010-02-14T20:41:46.517 回答