I would take trammell's suggestion a step further and also not recreate the statement handle every time and actually take advantage of the statement handle (and placeholders)-- i think this will have a decent improvement in the performance (amount of gain is probably db-dependent):
my $dbh = DBI->connect('DBI:mysql:diet', {RaiseError => 1, AutoCommit
+=> 0} ) || die "Failed to connect: $DBI::errstr";
my $sth = $dbh->prepare( qq{select topic FROM table1 WHERE uri LIKE ?}
+ );
search($sth, 'foo');
search($sth, 'bar');
$sth->finish();
$dbh->disconnect(); #disconnect from database;
sub search{
my $sth = shift; # require statement handle (this could probably be
+ a global var instead if desired)
my $q = shift; # take search parameter from html <form/>
my $found = 0; #initialize category found count;
$sth->execute($q);
my $rows = $sth->fetchall_arrayref( {} );
printf "%d rows found for '%s'.\n", scalar(@$rows), $q;
foreach my $row (@$rows){
printf " Topic: %s\n", &topic($row->{topic});
}
}
|