0

嗨,我遵循 OTRS 开发人员手册在模块中使用 sql 查询。

我运行以下查询,但我只从结果中获得第一个值。

  my $SQL = "SELECT id FROM roles ";

  $Self->{DBObject}->Prepare(SQL => $SQL, Limit => 15);

  my @Row = $Self->{DBObject}->FetchrowArray();

如果我检查@Row数组的大小,我会得到一个,但实际上我在角色表中创建了许多角色。

有人可以告诉我缺少什么吗?

4

2 回答 2

0

我无法将评论中的代码片段添加到其他答案,但这里有;FetchrowArray() 将返回结果中一行的列列表,因此您必须像下面那样对其进行迭代;正如所指出的。如果要将所有结果添加到数组中,只需使用 push。

$Self->{DBObject}->Prepare(
    SQL   => "SELECT id FROM table",
    Limit => 10
);

my @IDs;
while ( my @Row = $Self->{DBObject}->FetchrowArray() ) {
    push @IDs, $Row[0];
}
于 2013-09-05T10:57:57.583 回答
0

FetchrowArray() 应该在一个循环中。这是来自 OTRS 文档的示例:

$DBObject->Prepare(
    SQL   => "SELECT id, name FROM table",
    Limit => 10
);

while (my @Row = $DBObject->FetchrowArray()) {
    print "$Row[0]:$Row[1]\n";
}

我相信您应该改用 SelectAll 。SelectAll() 返回一个数组引用,而不是一个数组。

于 2013-09-04T14:58:20.780 回答