您好我按照OTRS开发人员手册在模块中使用sql查询。
我运行以下查询,但我只从结果中获得第一个值。
my $SQL = "SELECT id FROM roles ";
$Self->{DBObject}->Prepare(SQL => $SQL, Limit => 15);
my @Row = $Self->{DBObject}->FetchrowArray();
如果我检查@Row
数组的大小,我会得到一个,但实际上我在角色表中创建了很多角色。
有人可以告诉我什么不见了吗?
答案 0 :(得分:0)
FetchrowArray()应该在一个循环中。这是来自OTRS doc的一个例子:
$DBObject->Prepare(
SQL => "SELECT id, name FROM table",
Limit => 10
);
while (my @Row = $DBObject->FetchrowArray()) {
print "$Row[0]:$Row[1]\n";
}
我相信你应该使用SelectAll。 SelectAll()返回数组引用,而不是数组。
答案 1 :(得分: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];
}