2013-09-04 2 views
0

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

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

my $SQL = "SELECT id FROM roles "; 

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

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

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

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

ответ

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

+0

На самом деле я хочу сохранить результат запроса в массиве. – user2614607

Смежные вопросы