我在一个网络脚本课程中,老实说,不幸的是,它在我的网络和设计与分析课程中排名第二。因此,我发现我遇到的问题可能是平凡但无法轻易找到解决方案。
我正在编写一个可以与MySQL DB一起使用的CGI表单。我可以插入和删除到DB就好了。查询数据库时出现问题。
我的代码编译得很好,我在尝试通过浏览器“显示”数据库中的信息时没有出错,但实际上并没有显示数据和文本。有问题的代码在这里:
print br, 'test';
my $dbh = DBI->connect("DBI:mysql:austinc4", "*******", "*******", {RaiseError => 1} );
my $usersstatement = "select * from users";
my $projstatment = "select * from projects";
# Get the handle
my $userinfo = $dbh->query($usersstatement);
my $projinfo = $dbh->query($projstatement);
# Fetch rows
while (@userrow = $userinfo->fetchrow()) {
print $userrow[0], br;
}
print 'end';
此代码位于if语句中,该语句由print header,start_html,form,/ form,end_html包围。我只是试图调试并找出发生了什么并打印语句测试并结束。它打印出测试但不打印结束。它也不打印我的数据库中的数据,这在我打印出来之前就已经发生了。
我相信我所做的是:
但是我不明白为什么我的数据不会像最终文本一样打印出来。我查看了数据库,它确实包含数据库中的数据以及我试图从中获取数据的表。
这个让我难过,所以我感谢任何帮助。再次感谢。 =)
解决方案:
我使用的是我所包含的模块不支持的功能。这引出了另一个问题。我怎样才能发现这样的错误?事实上,我的程序确实正确编译,网页没有“破解”。除了我仔细检查我使用的所有方法是否有效,我是否只看到文本没有显示,并假设发生了这样的错误?
答案 0 :(得分:1)
在阅读注释后,程序被破坏的原因是query()不执行SQL查询。因此,您可能正在调用未定义的子例程,除非这是您在其他地方定义的包装器。
以下是我原始发布的有用提示,仍然适用: