【问题标题】:How do I connect MySQL using Perl/CGI in Mac OS Sierra?如何在 Mac OS Sierra 中使用 Perl/CGI 连接 MySQL?
【发布时间】:2018-08-25 08:39:16
【问题描述】:
#!/usr/bin/perl
print "content-type:text/html\n\n";
print "<html><body>";
use CGI;
use DBI;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
$db="New";
$user="root";
$password="isRovss*%1u";
$host="localhost";
$dbh=DBI->connect("DBI:mysql:database=$db:$host",$user,$password) || 
die "couldnt open database:$DBI :: errstr";

$sth=$dbh->prepare("select * from stud");
$rv=$sth->execute();
print "<table>";
print "<tr><th>id</th></tr><tr><th>name</th></tr><tr><th>age</th> 
</tr>";
while (@row = $sth->fetchrow_array()) {
    $id=$row[0];
    $name=$row[1];
    $age=$row[2];;
}
print "<tr><td>$id</td></tr><tr><td>$name</td></tr><tr><td>$age</td> 
</tr>";
print "</table>";
$rc=$sth->finish();
print "Database closed";
print "</body></html>";

我正在尝试使用 Perl 连接 mysql 数据库。我使用的是 Mac OS,它显示“无法连接数据库”。

上面给出了我使用的代码。请帮帮我。

【问题讨论】:

  • 那台机器上是否有数据库运行?您可以使用mysql 命令和相同的凭据通过命令行连接到它吗?
  • 您的代码非常过时。如果你从一本书中得到这个,请使用更现代的书。它教你过时的东西。您应该首先在代码顶部添加use strictuse warnings,然后使用my 声明变量。
  • 感谢您的意见,@simbabque。我没有任何编码经验,所以我从互联网上关注了这个。我会尝试使用严格和警告命令。
  • the Perl tag wiki here on Stack Overflow 中有很多学习现代 Perl 的好资源。看看那些,忘记你现在正在做的教程。你现在让你的生活变得艰难。 :)

标签: mysql macos perl


【解决方案1】:

DBI documentation

$dbh = DBI->connect($data_source, $username, $password, \%attr)
        or die $DBI::errstr;

与您的代码比较:

$dbh=DBI->connect("DBI:mysql:database=$db:$host",$user,$password) 
        || die "couldnt open database:$DBI :: errstr";

您已将$DBI::errstr 放入字符串文字中,并添加了空格。

这意味着您的错误消息报告代码将尝试报告$DBI(后跟:: errstr),而不是包含错误的变量。

解决这个问题,您就可以找出问题所在:

$dbh=DBI->connect("DBI:mysql:database=$db:$host",$user,$password) 
        || die "couldnt open database:" . $DBI::errstr;

【讨论】:

    【解决方案2】:

    在这里使用 CGI 是一种不必要的干扰。我建议您尝试先编写一个连接到数据库的非 CGI 程序,当您开始工作时,您可以将相同的连接代码复制到您的 CGI 程序中。

    事实上,即使在此之前,您也应该确保可以使用您的连接详细信息通过标准 MySQL 工具连接到 MySQL 服务器。

    如果您打开命令行窗口并运行以下命令会发生什么?:

    mysql -h localhost -u root -p -D New
    

    几乎可以肯定,这是连接数据库的问题,与 Perl 或 CGI 无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多