1

我正在使用 Perl CGI 使用以下代码访问 XAMPP 中的 MySQL 数据库:

#!/xampp/perl/bin/perl -w

use DBI;

print "Content-type:text/html\r\n\r\n";

$database = "mydb";
$host = "localhost";
$port = "3306";
$user = "root";
$pw = "";

$dsn = "dbi:mysql:$database:$host:$port";

print "Trying to connect <br />";
$connect = DBI->connect($dsn, $user, $pw, {RaiseError=>1});

if (defined $connect) {
    print "Preparing query <br />";
}

$query = "SELECT * FROM reference WHERE ID = 1742031";
$query_handle = $connect->prepare($query);

$query_handle->execute();

$query_handle->bind_columns(undef, \$pmid, \$popu, \$loc);

while($query_handle->fetch()) {
   print "$pmid, $popu, $loc <br />";
} 

但是我无法将结果打印到我的网页上。我想我无法连接到数据库,因为“准备查询”行没有被打印出来。但我可以连接到数据库并从 mysql 命令行执行此查询。我不知道问题可能是什么。

编辑:安装缺少的 DBD:mysql 模块后,我收到一个新错误:“无法连接到本地主机 (10061) 上的 MySQL 服务器”。我尝试按照这里的建议进行操作: MYSQL - Cant connect to MYSQL server on 'localhost' (10061) 并且一切似乎都很好。我正在运行 mysqld.exe,并且正在将 mysql 作为服务运行。另外,我可以通过 mysql 命令行以及 phpMyAdmin 连接到数据库,所以应该没有权限问题,因为我只有一个 root 帐户。

请指教。我将不胜感激任何帮助。

4

2 回答 2

1

如何安装这个模块?

在命令行上使用“cpan”:

> cpan 
cpan shell -- CPAN exploration and modules installation (v1.960001)
Enter 'h' for help.

cpan[1]> install DBD::mysql

如果没有安装,你可以下载它:

https://metacpan.org/pod/DBD::mysql

于 2012-04-24T13:42:30.563 回答
0

要使用 DBI 连接到 MySQL 数据库,请使用

$dsn = "dbi:mysql:$database;host=$host;port=$port";

localhost 和端口 3306 是默认值,因此您可以省略这些部分。

于 2012-04-25T01:31:13.113 回答