OTRS с использованием Mysql Query

Привет, я следую руководству разработчика OTRS по использованию sql-запросов внутри модулей.

Я запускаю следующий запрос, но получаю только первое значение из результата.

  my $SQL = "SELECT id FROM roles ";

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

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

если я проверю размер массива @Row, я получу один, но на самом деле у меня много ролей, созданных в таблице ролей.

Может ли кто-нибудь сказать мне, чего не хватает?


person user2614607    schedule 04.09.2013    source источник


Ответы (2)


Я не могу добавить фрагмент кода в комментарий к другому ответу, но вот так; FetchrowArray() вернет список столбцов для одной строки результата, поэтому вам придется перебирать его, как показано ниже; как указано. И если вы хотите добавить все результаты в массив, просто используйте push.

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

my @IDs;
while ( my @Row = $Self->{DBObject}->FetchrowArray() ) {
    push @IDs, $Row[0];
}
person MichielB    schedule 05.09.2013

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() возвращает ссылку на массив, а не массив.

person goneri    schedule 04.09.2013
comment
На самом деле я хочу сохранить результат запроса в массиве. - person user2614607; 04.09.2013