我想在selectrow / selectall函数调用期间绑定param类型。
是否有可能改变:
$sth = $dbh->prepare($sql);
$sth->bind_param(1, undef, {pg_type => DBD::Pg::PG_BYTEA});
$sth->execute($byteavalue);
对于selectrow声明:
$dbh->selectrow_arrayref( $sql, undef, $byteavalue );
答案 0 :(得分:2)
selectrow_*
的第一个参数可以是一个语句句柄,因此您可以使用:
$sth = $dbh->prepare($sql)
and $sth->bind_param(1, undef, { pg_type => DBD::Pg::PG_BYTEA })
and $dbh->selectrow_arrayref($sth, undef, $byteavalue);
否则,您必须创建自己的selectrow_arrayref
版本。现有版本是:
sub selectrow_arrayref {
my ($dbh, $stmt, $attr, @bind) = @_;
my $sth = ((ref $stmt) ? $stmt : $dbh->prepare($stmt, $attr))
or return;
$sth->execute(@bind)
or return;
my $row = $sth->fetchrow_arrayref()
and $sth->finish;
return $row;
}