1

我想在 selectrow/selectall 函数调用期间绑定参数类型。

是否可以更改以下内容:

$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 );
4

1 回答 1

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;
}
于 2012-08-09T20:54:42.870 回答