Apache2-SQLRequest
view release on metacpan or search on metacpan
lib/Apache2/SQLRequest.pm view on Meta::CPAN
DBUser foo
DBPassword bar
<Location /foo>
SQLQuery dummy "SELECT DUMMY FROM DUAL WHERE DUMMY = :y"
BindParameter dummy y X
</Location>
=head1 DESCRIPTION
This module functions as a base class for containing preloaded SQL
queries. It supplies methods to bind parameters, execute queries
and access record sets.
=cut
sub new {
my $class = shift;
my $r = bless { r => shift };
my $log = $r->log;
my $conf = Apache2::Module::get_config
lib/Apache2/SQLRequest.pm view on Meta::CPAN
sub sth {
my ($r, $qname) = @_;
Carp::croak("Must supply name of query") unless defined $qname;
my $sth = $r->{sth}{$qname};
Carp::croak("Cannot find statement handle for query $qname.")
unless defined $sth;
$sth;
}
sub bind_query {
my ($r, $qname, $params) = @_;
my $sth = eval { $r->sth($qname) };
Carp::croak $@ if $@;
my %p;
if (defined $params) {
if (UNIVERSAL::isa($params, 'ARRAY')) {
%p = map { $_+1 => $params->[$_] } (0..$#$params);
}
elsif (UNIVERSAL::isa($params, 'HASH')) {
%p = %$params;
}
else {
Carp::croak("params passed are not an ARRAY or HASH ref.");
}
}
%p = (%p, %{$r->{conf}{queries}{$qname}{params}||{}});
for my $k (keys %p) {
Carp::croak("Attempt to bind parameter $k failed: " . $sth->errstr)
unless ($sth->bind_param(":$k", $p{$k}));
}
#APR::SUCCESS;
0E0;
}
sub execute_query {
my ($r, $qname, @params) = @_;
my $sth = eval { $r->sth($qname) };
Carp::croak $@ if $@;
if (@params) {
my $param = @params > 1 ? [@params] : $params[0];
eval { $r->bind_query($qname, $param) };
Carp::croak $@ if $@;
}
$sth->execute;
}
sub fetchrow_arrayref {
my ($r, $qname) = @_;
my $sth = eval { $r->sth($qname) };
Carp::croak $@ if $@;
$sth->fetchrow_arrayref;
lib/Apache2/SQLRequest/Config.pm view on Meta::CPAN
}
push @directives => {
name => 'SQLQuery',
func => __PACKAGE__ . '::_set_sql_query',
args_how => Apache2::Const::TAKE2,
req_override => Apache2::Const::OR_ALL,
errmsg => 'queryname query',
};
sub _add_bind_param {
my ($self, $parms, $qname, $key, $val) = @_;
#unless ($parms->path) {
# my $srv_cfg = Apache2::Module::get_config($self, $parms->server);
# my $query = $srv_cfg->{queries}{$qname};
# die "bind parameter defined for nonexistent query $qname."
# unless defined $query;
# $query->{params} ||= {};
# $query->{params}{$key} = $val;
#}
my $query = $self->{queries}{$qname};
die "bind parameter defined for nonexistent query $qname."
unless defined $query;
$query->{params} ||= {};
$query->{params}{$key} = $val;
}
push @directives => {
name => 'BindParam',
func => __PACKAGE__ . '::_add_bind_param',
args_how => Apache2::Const::TAKE3,
req_override => Apache2::Const::OR_ALL,
errmsg => 'queryname key value',
};
Apache2::Module::add(__PACKAGE__, \@directives) if Apache2::Module->can('add');
sub _set_scalar {
my ($self, $parms, $arg) = @_;
my $key = $parms->info;
( run in 0.675 second using v1.01-cache-2.11-cpan-2398b32b56e )