Соединение с базой данных Perl не работает в файле .pm - PullRequest
0 голосов
/ 31 августа 2018

В Perl я подключил базу данных, используя концепцию DBI. Соединение с базой данных и выбор таблицы запроса отлично работает в файле .pl. Но я запустил код подключения к базе данных DBI в файле .pm. Это не работает.

Пожалуйста, просмотрите код.

Sample.pl (работает нормально)

use DBI;
my $driver = "mysql"; 
    my $database = "marketplace_perl";
    my $dsn = "DBI:$driver:database=$database";
    my $userid = "root";
    my $password = "root";
    my $dbh = DBI->connect($dsn, $userid, $password );
    my $dbh=connect_db();
        my $sth = $dbh->prepare("SELECT UserEmail,UserPassword FROM pj_user where UserEmail=? and UserPassword=?");

        $sth->execute($UserEmail,$UserPassword);

Marketplace.pm (не работает)

package Marketplace;
use DBI;
    sub connect_db {
        my $driver = "mysql"; 
        my $database = "marketplace_perl";
        my $dsn = "DBI:$driver:database=$database";
        my $userid = "root";
        my $password = "root";
        my $dbh = DBI->connect($dsn, $userid, $password );
       return $dbh;
    }

    sub login_marketplace { 

    my $dbh=connect_db();
            my $sth = $dbh->prepare("SELECT UserEmail,UserPassword FROM pj_user where UserEmail=? and UserPassword=?");

            $sth->execute($UserEmail,$UserPassword);
            my $User_count=$sth->rows;
    return $User_count

    }

Возвращает сообщение об ошибке "Не удалось получить доступ к классу (Marketplace): невозможно найти файл DBI.pm в @INC (может потребоваться установить модуль DBI)"

Пожалуйста, дайте мне знать, как исправить проблему с БД.

1 Ответ

0 голосов
/ 25 сентября 2018

Попробуйте этот код ниже в файле marketplace.pm.

use ENV;
my $PERL5LIB= $ENV{'PERL5LIB'};
 package Marketplace;

BEGIN {
 push(@INC, $PERL5LIB);
};
use DBI;
sub connect_db {
my $driver = "mysql"; 
my $database = "marketplace_perl";
my $dsn = "DBI:$driver:database=$database";
my $userid = "root";
my $password = "root";
my $dbh = DBI->connect($dsn, $userid, $password );
return $dbh;
}

sub login_marketplace { 

my $dbh=connect_db();
my $sth = $dbh->prepare("SELECT UserEmail,UserPassword FROM pj_user where UserEmail=? and UserPassword=?");

$sth->execute($UserEmail,$UserPassword);
my $User_count=$sth->rows;
return $User_count

}
...