使用 Perl CGI 和 XAMPP 连接到 MySQL 数据库

Posted

技术标签:

【中文标题】使用 Perl CGI 和 XAMPP 连接到 MySQL 数据库【英文标题】:Connect to MySQL database using Perl CGI and XAMPP 【发布时间】:2012-05-05 03:46:08 【问题描述】:

我正在使用 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 模块后,我收到一个新错误:“不能 连接到 localhost (10061) 上的 MySQL 服务器”。我尝试按照此处的建议进行操作: MYSQL - Cant connect to MYSQL server on 'localhost' (10061) 一切似乎都很好。我正在运行 mysqld.exe,并且正在将 mysql 作为服务运行。 另外,我可以通过 mysql 命令行以及 phpMyAdmin 连接到数据库, 所以应该没有权限问题,因为我只有一个 root 帐户。

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

【问题讨论】:

打开 RaiseError 看看 DBI 说什么出错了。 您是把 $pw 留空,还是直接在此处删除? 它说“在@INC 中找不到 DBD/mysql.pm”。如何安装这个模块?我什至没有在我的程序中使用它! @pilcrow 当我在 ppm 中查看可用驱动程序列表时,没有 DBD-mysql。有 DBD-CSV、ODBC、Oracle 和 SQLite。我从哪里得到这个 mysql 模块? @goldilocks 我还没有为数据库设置密码,因为我只是自己测试了一下。这有什么不同吗? 【参考方案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

【讨论】:

@pilcrow,JoelFan 感谢您的帮助!我安装了 DBD:mysql 模块。但是它现在显示一个新错误:“无法连接到本地主机上的 MySQL 服务器(10061)”。这可能是什么原因造成的?正如我所说,我可以通过 mysql 命令行连接到数据库。请帮帮我。 看起来可能有很多原因。您可以从这里开始:***.com/questions/119008/… 请记住,apache 不会以特权用户身份运行,这可能是也可能不是问题;例如,如果它甚至无法连接到身份验证。 如何让 apache 以特权用户身份运行? 如果有用的话,我可以通过 phpMyAdmin 访问我的数据库 "如何让 apache 以特权用户身份运行?" ——你没有。这样做是有原因的,如果你想学习 XAMPP 的东西,你需要留在行内。 apache 进程需要以它运行的任何用户身份访问 mysql 服务器(它实际上在启动后从 root 切换到其他用户,确切地说应该是谁在配置中)。【参考方案2】:

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

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

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

【讨论】:

以上是关于使用 Perl CGI 和 XAMPP 连接到 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

25-Perl CGI编程

无法使用 XAMPP 从 Python cgi 脚本写入 PYTHON_EGG_CACHE

无法使用 XAMPP 连接到 Apache 服务器

使用 XAMPP 连接到数据库

将 Xampp 连接到我的安卓设备

使用xampp连接到mysql [重复]