【问题标题】:Perl applicationPerl 应用程序
【发布时间】:2020-08-18 18:39:23
【问题描述】:

我想知道您是否可以帮助我完成此申请,因为我发现很难完成它。 基本上我正在尝试使用 Linux Debian/Html/Perl/Mysql 数据库动态添加/删除项目。我真的很感激任何帮助,即使只是关于如何进行的提示。到目前为止,这是我的代码..

#!/usr/bin/perl

use strict;
use warnings;
use DBI;

print "Content-Type:text/html;\n\n";
print "<h1>Doctors Database</h1><br><br>";

my $dsn = "DBI:mysql:database=doctors;host=localhost;port=3306";
my $dbh = DBI->connect($dsn, "sal", "las"); 

my $sth = $dbh->prepare('SELECT * FROM persone');
$sth->execute;

print $sth->rows . " Doctors\n<br><br> ";

print "<form>";
print "Name:<br>";
print "<input type=text name=name><br>";
print "Age:<br>";
print "<input type=text name=age><br>";
print "<input type=submit value=add><br>";
print "<input type=submit value=remove><br>";
print "</form>";

print "<table cols=2 border=1>\n";

print "<tr>\n";
print "<th>Name</th>\n";
print "<th>Age</th>\n";
print "</tr>\n";

while (my $Data = $sth->fetchrow_hashref) {
  print "<tr>\n";
  print "<td>", $Data->{'name'}, "</td>\n";
  print "<td>", $Data->{'age'}, "</td>\n";
  print "</tr>\n";
}

print "</table>\n";

$sth->finish;

【问题讨论】:

  • 你能解释一下缺少什么或者你在哪里挣扎吗?
  • 如果不了解更多关于您应该在这里了解的内容,真的很难提供帮助。
  • 您好,感谢您回复我。基本上,这段代码将简单地以表格格式显示我创建的 mysql 数据库。我需要的是,能够向该数据库添加/删除记录并在我的 apache Web 服务器中自动显示它们。
  • 我真的很感谢这里的任何帮助。非常感谢
  • 看起来您正在尝试构建一个 CGI 应用程序。 CGI 协议很难自己处理。您需要一个接口来将您的参数输入到您的程序中,以添加和删除行。以metacpan.org/pod/distribution/CGI/lib/CGI.pod 为起点,但请记住,这是一种非常古老、过时的技术。您的代码缺少很多 HTML 基础知识,因此我假设您对 Web 编程不是很熟悉。你可以创建子程序来添加和删除,但你也需要调度逻辑来调用它们。

标签: mysql perl


【解决方案1】:

试试这个:

sub mysql_connect($$$$) {
    my ($database, $host, $user, $password) = (shift, shift, shift, shift);
    my $handler = DBI->connect("DBI:mysql:database=$database;host=$host", $user, $password, {RaiseError=>0,PrintError=>1});
    return $handler;
};

sub mysql_do($$) {
    my ($f_handler, $f_sql) = (shift, shift);
    my $f_statement = $f_handler->do($f_sql);
    my $error = $DBI::errstr;
    if(defined $error){
        return -1;
    };
    return ($f_statement);
};

sub mysql_prepare($$){
    my ($f_handler, $f_sql) = (shift, shift);
    my $f_statement = $f_handler->prepare($f_sql);
    my $f_response = $f_statement->execute();
    return ($f_statement, $f_response);
}

my $temp = "SELECT * FROM \`$database\`.\`$database_table\`";
print $temp."\n" if ($debug_mode == 1);
my ($statement, $response) = mysql_prepare($database_handler , $temp);

while (my $mysql_table_row = $statement->fetchrow_hashref()) {
    #do something with row as hash
}

【讨论】:

  • 非常感谢您抽出宝贵的时间。真的很感激
  • 如果仍需要帮助,请告诉我。但我想也许你现在可以处理剩下的事情。不客气。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多