In my projects, I had routines like the following :

sub selectAll { my ($what,$table,@clauses); my $where = ""; if (@clauses) { $where = " WHERE " . join(" and ",@clauses); }; my $statement = "SELECT $what FROM $table $where"; my $sth = $dbh->prepare($statement); $sth->execute() or die "SQL: selectAll: '$statement' failed."; return $sth->fetchall_arrayref(); };

Nowadays, I'm using mostly prepared SQL queries with prepared parameters, as this gives automatic quoting, parameter count checking and syntax checking before that statement is executed the first time. If you don't have dynamic tables (and if you have, you should maybe rethink your database layout), the following should work for you :

my $sthGetFile = $dbh->prepare("select VISUAL,LINK from FILES where (I +D=?)"); sub getFile { my ($file) = @_; $sthGetFile->execute($file); return $sthGetFile->fetchrow_arrayref(); }; # Assuming $id exists in the table print getFile($id)->[1];

Update: On rereading the original post, I think the real answer is

my @id = (1,2,3,4,6,7,8); my $clause = ""; if (@id) { $clause = "where ID in (" . join(",",@id) . ")"; }; my $statement = "select ID,COLOR from TABLE $clause"; ...


In reply to Re: how do i construct a sql select statement, where i want to get the where clauses out of an array by Corion
in thread how do i construct a sql select statement, where i want to get the where clauses out of an array by pitbull3000

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.