遇到了perl dbi sqlite的问题。
我已经设置了一个数据库(并使用sqlite命令行进行了检查)。 现在我想搜索这个无效的数据库。
所以我试着做一个'SELECT *' 这会在数据库中打印仅第一个元素,但不会打印此表中的所有内容。
我认为导致select *失败的错误与阻止我使用“like%..%”的东西相同。
这是相关的代码,如果代码是正确的,数据库表似乎还有什么可能导致问题?
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 $_;
}
答案 0 :(得分:7)
fetchrow_array ()只提取一行。
尝试
while ( my @row = $sth->fetchrow_array ) {
print "@row\n";
}
答案 1 :(得分:6)
根据the documentation
,fetchrow_array
获取下一行数据并将其作为包含字段值的列表返回。
如果你想要所有数据,你可以反复调用fetchrow_array
(或fetchrow_arrayref
),直到你到达表的末尾,或者你可以使用{{1 }}:
fetchall_arrayref方法可用于获取从准备和执行的语句句柄返回的所有数据。它返回对每行包含一个引用的数组的引用
代码看起来像这样
fetchall_arrayref