No, look again at the answers you've been given above. You want to prepare the SQL statement outside your two foreach blocks, and use bind parameters to substitute the $c1 and $c2 variables on the fly:
use strict;
my $sth = $dbh->prepare("SELECT blah from blah1 where blah1.field = ?"
+);
foreach my $c1(@c1) {
$sth->execute($c1);
# do stuff
}
Your SQL statements are identical, so if (for some reason) you want to spin through two levels of bind parameters, you still only need to prepare the statement once outside the loop.