use*_*092 3 sqlite perl select dbi
有一个perl dbi sqlite的问题.
我已经设置了一个数据库(并使用sqlite命令行进行了检查).现在我想搜索这个无效的数据库.
所以我试着做一个'SELECT*',它只打印数据库中的第一个元素,但不是因为它应该是这个表中的所有内容.
我认为导致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_array()只获取一行.
尝试
while ( my @row = $sth->fetchrow_array ) {
  print "@row\n";
}
根据the documentation,fetchrow_array
获取下一行数据并将其作为包含字段值的列表返回.
如果您想要所有可以重复调用fetchrow_array(或fetchrow_arrayref)的数据,直到到达表的末尾,或者您可以使用fetchall_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";
}
| 归档时间: | 
 | 
| 查看次数: | 2611 次 | 
| 最近记录: |