use strict; use DBI; my $database='db'; my $username='user'; my $password='pass'; my $dbh=DBI->connect('DBI:mysql:database='.$database, $username,$password); print 'dbh error' if (!$dbh); my @ref = (); my @names = ('Jack'); my $base_sql=q{SELECT username FROM test_members WHERE referral }; while (scalar(@names)) { my $sql=$base_sql.($#names?'in ('.join(',',map('?',@names)).')':'=?'); print "$sql\n"; my $sth=$dbh->prepare($sql); print 'sth error' if (!$sth); my $rv=$sth->execute(@names); print 'rv error' if (!$rv); my $res = $sth->fetchall_arrayref(); @names=map($res->[$_][0],0..$#$res); push @ref, join '|',@names if (scalar(@names)); } print join(',',@ref),"\n"; print "finished\n";