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 Monksの第4章(エラー処理)または「DBI::mysqlエラー処理」のPerlDBIのプログラミングを参照してください。

于 2010-02-05T08:37:34.160 に答える
0

何が起こっているのか分からないときに私がよくすること:

Data::Dumper を使用します。

私の $ref = $sth->fetch();

ダンパー $ref を印刷します。

データ構造のレイアウトが表示されます。場合によっては、配列またはハッシュへの不適切なインデックス付けの問題です。

于 2010-02-14T20:41:46.517 に答える