OTRS使用Mysql Query

时间:2013-09-04 14:54:02

标签: mysql otrs

您好我按照OTRS开发人员手册在模块中使用sql查询。

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

  my $SQL = "SELECT id FROM roles ";

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

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

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

有人可以告诉我什么不见了吗?

2 个答案:

答案 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];
}