mysql - 如何在带有变量的mysql perl中创建子例程

标签 mysql perl hash subroutine

我有两个 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/

相关文章:

php - 如何计算并显示二进制上的所有左子和右子

mysql - 允许漫游用户访问 MySQL 数据库的最佳方式

perl - 如何使用 `pipe` 促进 Perl 中的进程间通信?

perl - 在 Perl 中获取 shell 脚本

javascript - jsSHA512 来自同一字符串的不同哈希值

sql - 我应该使用平面表还是规范化数据库?

mysql - SQL: 'like' 条件内的附加条件

regex - 删除空格 : Unicode properties - character classes

java - 在java中尝试MD5哈希

amazon-web-services - 如何解决 DynamoDB 中的 "hot"哈希键问题(空间倾斜数据)?