Perl DBI 2 динамических массива в 1 запросе

В настоящее время у меня есть веб-страница с двумя полями для нескольких выборок, которая возвращает две разные строки, которые будут использоваться в моих запросах SQL.

В настоящее время я использую только одну строку в своих запросах, но хочу добавить другую и не знаю, куда идти дальше.

У меня есть строка создается в массив

@sitetemp = split ',', $siteselect;
my $params = join ', ' => ('?') x @sitetemp;

и могу использовать запрос с $params

$mysql_inquire = "SELECT starttime, SUM(duration) FROM DB WHERE feature = \"$key\"  and starttime >= $start and starttime <= $end  and site IN ($params) group by starttime order by starttime";


 $sth = $DBH->prepare($mysql_inquire);
 $sth->execute(@sitetemp);

По сути, мой вопрос, как я могу сделать то же самое, используя 2 разных массива?

Я предполагаю линию $sth->execute(@sitetemp, @otherarray); не будет работать.

1 ответ

Решение

Ваш подход будет работать.

Вы можете передать в функцию столько массивов, сколько захотите. Массивы - это просто списки значений.

Рассмотрим следующий пример:

sub foo {
    print Dumper \@_;
}
my @a = ( 1, 2, 3 );
my @b = ( 4, 5, 6 );
foo( @a, @b, ( 7, (8), 9, ( ( (10) ) ) ) );

Это напечатает:

$VAR1 = [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10
        ];

Когда ты сказал foo(@a, @b) он просто оценит каждый массив в список. И вы можете объединить столько списков, сколько хотите, они всегда будут сведены.

Другие вопросы по тегам