in reply to Right Number DB

HI there,

Can someone explain why when I have more than one value in any of my variables and I go in to the if statement I loose the first value and it starts to print from the second value on. Therefore I am not able to say if in any of the results I have more than one value just print all the values but if there is only one I want to use that value for something else like printing it in a url to redirect to another page.

Thanks for the help!
my $count=0; while ($pointer = $sth->fetchrow_hashref) { ++$count; $type=$pointer->{'TYPE'}; $number =$pointer->{'NUMBER'}; $line =$pointer->{'LINE'}; if($count > 1) { print "**** $number **** \n"; # If there is more than one v +alue it will start to print from the second one and it will still go +to the ELSE I need to print all the values here and exit from it, jus +t need to know what is the best way to do it. }else { print $number; } } #end of the while

janitored by ybiC: Reparent into existing thread, format for legibility

Replies are listed 'Best First'.
Re: (2) Right Number DB
by Roger (Parson) on Dec 11, 2003 at 13:09 UTC
    You could do it in two steps -

    Step 1 Explicitly get the row count with SQL -
    SELECT count(*) FROM table where ...
    And then retrieve the rowcount from the query result.

    Step 2 Prepare the actual SQL to fetch the data. Since you already know the row count from the previous step, you can easily implement the required logic.

    $sth = $dbh->prepare($sql); $sth->execute(); if ($rowcount == 1) { # do single row logic # fetch data } else { # do multi-row logic # fetch data with while loop }
    There is a rowcount variable in the DBI, but I would not rely on it because it is not reliable (and database dependent?).