【问题标题】:OTRS using Mysql QueryOTRS 使用 Mysql 查询
【发布时间】:2013-09-04 14:54:01
【问题描述】:

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

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

  my $SQL = "SELECT id FROM roles ";

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

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

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

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

【问题讨论】:

    标签: mysql otrs


    【解决方案1】:

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

    $Self->{DBObject}->Prepare(
        SQL   => "SELECT id FROM table",
        Limit => 10
    );
    
    my @IDs;
    while ( my @Row = $Self->{DBObject}->FetchrowArray() ) {
        push @IDs, $Row[0];
    }
    

    【讨论】:

      【解决方案2】:

      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() 返回一个数组引用,而不是一个数组。

      【讨论】:

      • 其实我想把查询结果存储在一个数组中。
      猜你喜欢
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2011-10-27
      • 1970-01-01
      • 2015-08-17
      • 2016-02-07
      相关资源
      最近更新 更多