gpt4 book ai didi

mysql - Perl 在脚本之间传递数据而不使用查询字符串

转载 作者:行者123 更新时间:2023-11-29 13:59:51 25 4
gpt4 key购买 nike

我是 Perl 新手。编程新手。我已经编写了一些用于创建、搜索和查看“代理”的 CGI 屏幕。创建将记录插入数据库表中,搜索显示记录的一些详细信息,允许用户选择他们想要使用的记录, View 将记录拉回并根据从搜索中选择的 ID 将它们显示给用户(当然不是但事实并非如此)。

在我的搜索页面上,我根据用户定义的搜索类型和搜索关键字显示页面。我希望根据用户从搜索中选择的记录将用户带到“查看代理”页面。

我希望通过传递用户在搜索屏幕上选择的记录的数据库表中的记录 ID 来完成此操作。有没有一种方法可以让我在不使用查询字符串的情况下可靠地传递脚本之间选择的 ID(searchagent.pl 到 agent.pl)?该脚本仅供内部使用,不会涉及任何私有(private)信息。

我确实环顾了一下,看到了全局变量和包,但我不太确定这些是否是我所需要的。

预先感谢您的帮助。

编辑以包含一些代码:

从之前的子例程中获取搜索类型和搜索关键字,并基于此运行 SQL 查询。将表格输出返回到显示结果的不同子例程中。我在表输出中出现了奇怪的多个链接,因为我有一些 css 样式,使得当鼠标悬停在上面时整行都突出显示。

sub GetResults {

my $searchtype = $form{'radio'};
my $searchfor = $form{'searchby'};
my ($selectID, $selectname, $selectphone, $selectstate, $selectzip);

given ($searchtype) {
when('a.agentid') { $selectID = "CHECKED"; }
when('a.name') { $selectname = "CHECKED"; }
when('c.phonenumber') { $selectphone = "CHECKED"; }
when('addy.state') { $selectstate = "CHECKED"; }
when('addy.zipcode') { $selectzip = "CHECKED"; }
default { $selectID = "", $selectname = "", $selectphone = "",$selectstate = "", $selectzip = ""; }
}



my $sth = $dbh->prepare("select a.AgentID, a.name, c.phonenumber, addy.state, addy.zipcode from agent a inner join entity e on entityid = agentid inner join contact c on contactid = billingcontactid inner join address addy on addressid = physicaladdressid where $searchtype like '%$searchfor%' order by $searchtype;") or die "prepare statement failed: $DBI::errstr\n";


$sth->execute;

my ($table, $f1, $f2, $f3, $f4, $f5);


while (($f1, $f2, $f3, $f4, $f5) = $sth->fetchrow_array)
{
$table .= "<tr><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f1</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f2</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f3</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f4</a></font></td><td align=center><font size=\"4\" color=\"black\"><a name=\"idagent\" href=\"agent.pl?agentid=$f1\">$f5</a></font></td></tr>";
}

$sth->finish;

return ($table, $searchfor, $selectID, $selectname, $selectphone, $selectstate, $selectzip);

}

当选择记录时,我使用查询字符串传递所选记录的 ID 并运行此子例程并在另一个子例程中显示结果。我正在使用数组的值将值打印到文本字段中,并使用一些给定的语句来确定下拉列表。 话虽这么说,有没有比使用给定并列出所有 50 个状态更快地确定状态选择的方法?

sub GetAgent {

my $sth = $dbh->prepare("select a.name, a.paidcommission, a.paidreferral, paddy.address1, paddy.address2, paddy.city, paddy.state, paddy.zipcode, maddy.address1, maddy.address2, maddy.city, maddy.state, maddy.zipcode, bc.name, bc.phonenumber, bc.phoneext, bc.phonenumber2, bc.phoneext2, bc.fax, bc.email, sc.name, sc.phonenumber, sc.phoneext, sc.phonenumber2, sc.phoneext2, sc.fax, sc.email from agent a inner join entity e on entityid = agentid inner join address paddy on paddy.addressid = physicaladdressid inner join address maddy on maddy.addressid = mailingaddressid inner join contact bc on bc.contactid = billingcontactid inner join contact sc on sc.contactid = salescontactid where a.agentid = $form{agentid};") or die "prepare statement failed: $DBI::errstr\n";


$sth->execute;

my @agentval = $sth->fetchrow_array;

$sth->finish;

return (@agentval);

}

最佳答案

如果不想使用查询字符串,可以使用POST,参见:

How to hide my url params?

您还可以使用cookie:

http://perldoc.perl.org/CGI/Cookie.html

如果您刚刚开始,查询字符串是最简单的。

关于mysql - Perl 在脚本之间传递数据而不使用查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com