Я использую 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};
Если кто-то может сообщить мне, где я ошибаюсь, это будет очень признательно.
Попробуйте использовать DBI обработку ошибок, чтобы узнать, что не так. См. Программирование Perl DBI, глава 4 (обработка ошибок) или "DBI:: mysql обработки ошибок" на Perlmonks для ссылок.
Что я часто делаю, когда не вижу, что происходит:
используйте Data:: Dumper;
my $ref = $sth- > fetch();
print Dumper $ref;
и вы увидите структуру структуры данных. Иногда это вопрос неправильного индексирования в массив или хеш.