Perl dbi sqlite“select*”仅返回第一个元素

Perl dbi sqlite“select*”仅返回第一个元素,perl,sqlite,select,dbi,Perl,Sqlite,Select,Dbi,perl dbi sqlite出现问题 我已经建立了一个数据库,并使用sqlite命令行进行了检查。 现在我想在这个数据库中搜索,但它不起作用 所以我试着做一个“选择*” 这将只打印数据库中的第一个元素,但不打印表中的所有内容 我认为导致select*失败的错误与阻止我使用类似%..%的东西的错误相同 这是相关代码,如果代码正确且数据库表看起来良好,还有什么可能导致问题 my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","") |

perl dbi sqlite出现问题

我已经建立了一个数据库,并使用sqlite命令行进行了检查。 现在我想在这个数据库中搜索,但它不起作用

所以我试着做一个“选择*” 这将只打印数据库中的第一个元素,但不打印表中的所有内容

我认为导致select*失败的错误与阻止我使用类似%..%的东西的错误相同

这是相关代码,如果代码正确且数据库表看起来良好,还有什么可能导致问题

 my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","") || die "Cannot connect: $DBI::errstr";

my $sth = $dbh->prepare('SELECT * FROM words');
$sth->execute;
my @result = $sth->fetchrow_array();


foreach( @result) {
    print $_;
}
fetchrow\u数组仅获取一行

试一试

根据,fetchrow_数组

获取下一行数据并将其作为包含字段值的列表返回

如果需要所有数据,可以重复调用fetchrow\u array或fetchrow\u arrayref,直到到达表的末尾,也可以使用fetchall\u arrayref:

fetchall_arrayref方法可用于从准备和执行的语句句柄获取要返回的所有数据。它返回对数组的引用,该数组每行包含一个引用

代码如下所示

use strict;
use warnings;

use DBI;

my $dbfile = 'words.db';

my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile", '', '') or die "Cannot connect: $DBI::errstr";

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

foreach my $row ( @$result ) {
  print "@$row\n";
}

你应该给你的答案加上严格的要求来改进它。否则,您就成功了。DBI->connect的密码参数处的代码中有一个错误
use strict;
use warnings;

use DBI;

my $dbfile = 'words.db';

my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile", '', '') or die "Cannot connect: $DBI::errstr";

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

foreach my $row ( @$result ) {
  print "@$row\n";
}