我有两个 mysql 命令。我想用这两个 mysql 命令为我必须搜索的其余数据创建一个子例程。我有很多条目。有没有一种方法可以创建一个子例程,以便代替我在两个 mysql 命令中输入的实际数字和字符,我输入可以替换的变量,这样我就可以复制并粘贴这些变量和命令的实际值对剩余条目执行?
例如,我有一个命令说
$sth = $dbh->prepare ("select name from table1 where number > 5");
$sth->execute();
@row;
while (@row = $sth->fetchrow_array) {
print "$row[0]\tquestion1\n";
代替 select 命令中列出的“5”和 print 命令中列出的“question1”,我想用一些东西代替它,比如“变量”,这样我就可以创建一个包含这些命令的子程序,但您可以通过为这些变量插入不同的值来执行并一遍又一遍地运行子例程。
像这样:$dbh = DBI->connect($dsn, $user, $password); 不确定如何为 mysql perl 执行此操作。
最佳答案
您可以使用 placeholders在您的查询中使用不同的值进行搜索。
$sth = $dbh->prepare ("select name from table1 where number > ?");
$sth->execute(5);
在那之后,为您的打印制作一个子程序应该是微不足道的。
例如:
my @values = qw(5 10 15 20);
my @fields = qw(question1 question2);
# ... other code..
my $sth = $dbh->prepare ("select name from table1 where number > ?");
for my $field (@fields) {
for my $value (@values) {
printfields($sth, $value, $field);
}
}
sub printfields {
my ($sth, $value, $field) = @_;
$sth->execute($value);
while (my @row = $sth->fetchrow_array) {
print "$row[0]\t$field\n";
}
}
关于mysql - 如何在带有变量的mysql perl中创建子例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15146952/