Try something like this:
my $table = 'book';
my $condition = '1';
my $sort_field = 'id';
my $sort_order = 'DESC";
my $sql = "SELECT id, name, location FROM $table WHERE $condition ORDE
+R BY $sort_field $sort_order";
print $sql,"\n";
my $sth = $dbh->prepare($sql);
$sth->execute() or warn "Unable to query $table" $dbh->errstr . "\n" .
+ $!;
while (my $row = $sth->fetchrow_hashref()) {
print $row->{'id'},"\t",$row->{'name'},"\t",$row->{'location'},"\n";
+;
}
Remember: single quotes give you a literal, double quotes interpolates included variables. Also, if this is untrusted user input you are manipulating (say the kind collected at a browser) you would be much safer to use bind variables, by replacing these two lines like so:
my $sql = "SELECT id, name, location FROM $table WHERE ? ORDER BY ? ?"
+;
. . .
$sth->execute($condition,$sort_field,$sort_order);
Note: I've never tried to feed a $sort_order as a bind variable and have no idea if that would work. But a few tests ought to let you know if it will. I do know that the rest of this should work, although I have not tested this code, leaving that to you.
-- Hugh
if( $lal && $lol ) { $life++; }
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.