mysjkin Skrevet 1. mars 2005 Del 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 Lenke til kommentar
tvangsgreie Skrevet 4. mars 2005 Del Skrevet 4. mars 2005 Tror ikke det, siden antall felter i IN () kan variere. Lenke til kommentar
superlaban Skrevet 7. april 2005 Del 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); Lenke til kommentar
mysjkin Skrevet 11. april 2005 Forfatter Del 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. Lenke til kommentar
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å