0

私はこのコードを持っています:

    my (@matches, @vars);  

    if ($date_to) {
            push(@matches, q{ m.mentioned_at <= ? });
            push(@vars, $date_to);
        }

        if ($person) {
            push(@matches, q{ t.name like ? });
            push(@vars, $person);
        }
    if ($show) {
            push(@matches, q{ t.name like ? });
            push(@vars, $show);
        }  
    if (@vars){
        my $where = join (' and ', @matches);
        $where = qq{where $where} if @matches  
        $res = $db->do({ page => $.p, per_page => $.s }, q{
                      select m.id, m.body, m.link,
                      count(distinct(m.id)) as num_items
                      from mentions m
                      $where 
                      group by m.id, m.body, m.link,
                      order by m.created_at desc
               }, @vars );
     }   

     print STDERR Dumper ($where);    
     $VAR1 = 'where  m.mentioned_at <= ?  and  t.name like ? ';`  
     print STDERR Dumper (@vars);   
     $VAR1 = '2012/06/01';  
     $VAR2 = 'Adby Phil';`  

なぜ私はこのエラーを持っているのですか:

called with 2 bind variables when 0 are needed  
Can't use an undefined value as an ARRAY reference 

$where 句が表示されないようです。

4

1 に答える 1