in reply to Reusing a variable declared earlier in the same scope

my $rows = $GetAssignmentID_sth->rows; if($rows > 0) { while (my ($AssignmentID, $UserCount) = $GetAssignmentID_sth-> fet +chrow_array() ) { push(@AssignmentIDs, $AssignmentID); } }

How about completely getting rid of the whole $rows part? It seems redundant (all it does is protect a while loop, that would not be executed anyway if there is no data to loop over), and error-prone ($sth->rows is not guaranteed to be the correct number of rows until you have fetched them all).

while (my ($AssignmentID, $UserCount) = $GetAssignmentID_sth-> fetchro +w_array() ) { push(@AssignmentIDs, $AssignmentID); }

Replies are listed 'Best First'.
Re^2: Reusing a variable declared earlier in the same scope
by reluctant_techie (Novice) on Apr 14, 2008 at 15:30 UTC
    My purpose in testing whether or not any rows are returned is to prevent a situation where the final $AssignmentIDs variable point at an empty string. I am using this variable in my next SQL statement using the IN syntax. For example,
    SELECT ... FROM ... WHERE AssignmentID IN ($AssignmentIDs)
    This is all very helpful information though. Thanks!