为什么不';我不能得到这个DBI/MySQL查询的输出吗?
我已经用Perl编写了以下代码。我有适用于Windows7的ActivePerl 5.14为什么不';我不能得到这个DBI/MySQL查询的输出吗?,mysql,perl,dbi,activeperl,Mysql,Perl,Dbi,Activeperl,我已经用Perl编写了以下代码。我有适用于Windows7的ActivePerl 5.14 #!C:\perl64\bin\perl.exe -wT use strict; use warnings; use DBI; print "Content-type: text/html \n\n"; # MYSQL CONFIG VARIABLES my $driver = "mysql"; my $database = "test555"; my $tablename3 = "test
#!C:\perl64\bin\perl.exe -wT
use strict;
use warnings;
use DBI;
print "Content-type: text/html \n\n";
# MYSQL CONFIG VARIABLES
my $driver = "mysql";
my $database = "test555";
my $tablename3 = "test77";
my $user = "root";
my $pw = "root";
# PERL MYSQL CONNECT()
my $dbh = DBI->connect("DBI:$driver:$database", $user, $pw,);
my $sth = $dbh->prepare("
SELECT *
FROM t6
WHERE paragraph='PWE1234'
");
$sth->execute();
#$dbh->disconnect;
#exit 0;
当程序到达
$dbh->disconnect
时,系统抛出错误;于是就把它评掉了。当我将其注释掉时,系统没有抛出任何错误,但我也没有得到输出
这个查询有一个结果,我用MySQL单独检查了一次。没有输出,因为您没有创建任何输出的代码
调用
execute
后,您需要调用其中一个,并对返回的数据结构进行处理。您没有打印任何内容,为什么需要任何输出?“系统正在抛出错误”。。。什么错误?@gpojd,它抛出了一个错误注册表。语句句柄未关闭。因为我用的是严格的,所以它吐了。所以,在关闭数据库句柄之前,我给了语句句柄一个finish语句。现在解决了@Mannii88,听起来好像在关闭语句句柄之前没有获得所有记录。这可能是故意的,但我不知道。我通常while(my$row=$sth->fetchrow){…}
来获取所有的行,然后我不需要$sth->finish
@gpojd,你能给我一个最新模块的例子吗。。。我正在尝试与来自网络的资源并行…我正在尝试使用哈希..我想打印数组…带有标题…嗨@quentin,你能提供一个示例或链接,在那里我可以找到一个实例…用于获取数组/哈希并用perl打印..我可以打印通过,而(@row=$sth->fetchrow\u array()){print“@row\n”;但是,如果我想使用for语句,如何获得行计数并给出循环…我怀疑您会发现很多(如果有的话)DBD,它会告诉您所选行的行数,直到您实际获取了所有行,在这种情况下,这并不重要。您可以使用fetchall\u arrayref/fetchall\u hashref获取结果集中的所有行,但显然您需要内存来保存这些行。您可以使用MaxRows和这些方法来限制每次调用返回的行。ThDBI文档中有一些很好的示例。$sth->rows()
将返回所选行数。