mysjkin Skrevet 1. mars 2005 Skrevet 1. mars 2005 (endret) Jeg har satt opp syslog-ng på nettverket hjemme (div linuxmaskiner), moser all loggingen inn i postgres og henter ut info vha apache og mod_perl. Jeg har satt opp så jeg kan hente entrier for alle eller en bestemt maskin og for priority >= en gitt verdi. So far so good.. (Legger ut systemet på nettet når jeg har det litt mer ferdig i fall andre er interesserte) Men, jeg vil også kunne vise logging for en eller flere 'facilities', da vi jeg bruke en spørring som fx select <felter> from tabell where facility in ('mail','kern','auth') Noe som vil funke er jo # @facilities er en array som inneholder de valgte 'fasilitetene' antar minst en valgt $select="select <felter> from tabell where facility in (?".",?"x$#facilities-1.")"; $qh=$dbh->prepare($select); $qh->execute(@facilities); Men finnes det noe alternativ til å bygge opp sql-strengen for hver spørring? M. edit, jøss innlegg 200 Endret 1. mars 2005 av mysjkin
tvangsgreie Skrevet 4. mars 2005 Skrevet 4. mars 2005 Tror ikke det, siden antall felter i IN () kan variere.
superlaban Skrevet 7. april 2005 Skrevet 7. april 2005 Hvis du er allergisk mot prepare() kan du minske antall ganger de kjøres på ved å ta vare på qh'er i en hash. Når det er fire elementer i @facilities og du kjørt for fire tidligere også, så gjenbruk prepare()-resultatet fra den gang: $select="select ... from tabell where facility in (?".",?"x$#facilities-1.")"; $qh{@facilities} ||= $dbh->prepare($select); $qh{@facilities}->execute(@facilities); Eller hvis du er 100% allergisk, og det er en max-grense på f.eks. 10 stk i @facilities så kan du: #--En gang $max=10; $select="select ... from tabell where facility in (?".",?"x$max-1.")"; $qh=$dbh->prepare($select); . . . #--Flere ganger, antar her ¤ er et tegn/kode som aldri opptrer $qh->execute(@facilities,map"¤",@facilities+1..$max);
mysjkin Skrevet 11. april 2005 Forfatter Skrevet 11. april 2005 Nøh, allergisk mot prepare er jeg absolutt ikke, men dersom den er resirkulerbar, er det jo greiest å bruke en prepared query på nytt... Tenkte ikke på å cache en prepared query i det opprinnelige spørsmålet mitt, lurte mer på om det var noen mulighet til å mose en array eller arrayref inn i en ?. takk for tipset, skal putte inn en orcish manouver noen velvalgte steder. M.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå