Почему мой Perl CGI жалуется на «Не могу найти Mysql.pm»? - PullRequest
0 голосов
/ 24 марта 2010

У меня есть две папки php и perl. Они содержат index.php и index.pl соответственно.

Мой Perl-код выглядит так:

#!/usr/bin/perl
use Mysql;

print "Content-type: text/html\n\n"; 
print "<h2>PERL-mySQL Connect</h2>";
print "page info";
$host = "localhost";
$database = "cdcol";
$user = "root";
$password = "";
$db = Mysql->connect($host, $database, $user, $password);
$db->selectdb($database);

Когда я запускаю вышеуказанный код (набрав http://localhost:88/perl/ в браузере), я получаю следующую ошибку:

Can't locate Mysql.pm in @INC (@INC contains: C:/xampp/perl/site/lib/ C:/xampp/perl/lib C:/xampp/perl/site/lib C:/xampp/apache) at C:/xampp/htdocs/perl/index.pl line 2. BEGIN failed--compilation aborted at C:/xampp/htdocs/perl/index.pl line 2.

, тогда как просмотр к http://localhost:88/php/ работает.

index.php имеет:

<?php
$con = mysql_connect("localhost","root","");
    if($con)
    {
        if(mysql_select_db("cdcol", $con))
        {
            $sql="SELECT Id From products";
            if(mysql_query($sql))
            {
                $result = mysql_query($sql);
                if ($result) ...

1 Ответ

3 голосов
/ 24 марта 2010

Вы должны использовать DBI в сочетании с DBD :: mysql .

Вы должны использовать стандартный модуль обработки CGI, такой как CGI :: Simple .

use strict; use warnings;
use CGI::Simple;
use DBI;

my $cgi = CGI::Simple->new;
my $dsn = sprintf(
    'DBI:mysql:database=%s;host=%s',
    'cdcol', 'localhost'
);

my $dbh = DBI->connect($dsn, root => '',
    { AutoCommit => 0, RaiseError => 0 }
);

my $status = $dbh ? 'Connected' : 'Failed to connect';

print $cgi->header, <<HTML;
<!DOCTYPE HTML>
<html>
<head><title>Test</title></head>
<body>
<h1>Perl CGI Script</h1>
<p>$status</p>
</body>
</html>
HTML
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...