1stly I'd be using a bindvar for two reasons:
  1. Performance. You dont mention your db engine, however a decent RDBMS will hash your statement, then look the hash up in an internal table. If it finds a match it will used the previous statement. If not it will re-parse the statement. What you are doing by not using a bindvar (?) is making the statement change with each value, hence extra overhead for the engine to reparse essentially the same statement.
  2. Character parsing. If you use bindvars (also called placeholders) you dont have to worry about escaping characters such as single quotes! If you havent thought of this, consider the impact of:'value';drop comments; as the value of $news_id

To the orig. question, I personally prefer to use fetchrow_arrayref() then push a copy of it onto a return array. It works out kind a like a 2D array of columns in the "inside" array and rows on the "outside" array. It makes it nice and easy to process.

BTW, you have to make a copy of the container, as it is re-used for each row returned:

while (my $retval = $sth->fetchrow_arrayref()){ push @retary, [$retval]; }
should do it.. :-)

HTH!


In reply to Re: Looping with DBI by Ryszard
in thread [untitled node, ID 178308] by Samn

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.