我有一个数据库表,其中包含各种列和行数据。
我希望在循环中完成此操作,直到搜索到所有“product”列的所有行。
我有以下代码打印到屏幕,但所有匹配的行和列立即在屏幕上返回i,e不单独按照我的意愿提交(请参阅上面的(3))。
另请注意输出格式化,这就是我想要的方式,我是单独的行e.t.c
任何人都可以帮忙吗?
#!/usr/bin/perl
use DBI;
@product = qw( orange apple); ###an array created for products
$count = 1;
# Connect to the database
details not provided
my $dbh = DBI->connect("DBI:mysql:$db;host=$db_host",$mysql_user, $mysql_passwd)
|| die "ERROR: Connecting: $DBI::errstr\n";
print "db connected\n";
foreach $product(@product)
{
# Prepare the SQL query for execution
my $sth = $dbh->prepare(<<End_SQL)
or die "Couldn't prepare statement: $DBI::errstr; stopped";
SELECT item_id, published, modified, availability, summary,
product, reference FROM $my_table WHERE product LIKE '%$product%'
End_SQL
# Execute the query
$sth->execute() or die "Couldn't execute statement: $DBI::errstr; stopped";
# Fetch each row and print it
while ( my ($item_id, $published, $modified, $availability, $summary, $product,
$reference) = $sth->fetchrow_array() )
{
print STDOUT ("ITEM ID: $item_id\n Product: $product\n Published:
$published Modified:$modified\n Availability: $availability\n Summary: $summary\n
Reference: $reference\n");};
$count++;
}
# Disconnect from the database
$dbh->disconnect();
答案 0 :(得分:0)
您必须创建一个文件并写入
,而不是print STDOUT
open(my $f, ">$item_id") or die "Cannot create file $item_id: $!";
print $f "ITEM ID: $item_id\n Product: $product\n Published: $published Modified:$modified\n Availability: $availability\n Summary: $summary\n Reference: $reference\n";
close($f);