DBIx-Abstract
view release on metacpan or search on metacpan
lib/DBIx/Abstract.pm view on Meta::CPAN
return $self;
}
sub replace {
my $self = shift;
my ($table, $fields ) = @_;
# $table == Name of table to update
# $fields == A reference to a hash of field/value pairs containing the
# new values for those fields.
my (@bind_params);
if ( ref($table) ) {
$fields = $table->{'fields'};
$table = $table->{'table'};
}
$table or die 'DBIx::Abstract: insert must have table';
my $sql = "REPLACE INTO $table ";
if ( ref($fields) eq 'HASH' ) {
my @keys = sort keys %$fields;
my @values = map {$fields->{$_}} @keys;
$#keys > -1 or die 'DBIx::Abstract: insert must have fields';
$sql .= '(';
for ( my $i = 0 ; $i <= $#keys ; $i++ ) {
if ($i) { $sql .= ',' }
$sql .= ' ' . $keys[$i];
}
$sql .= ') VALUES (';
for ( my $i = 0 ; $i <= $#keys ; $i++ ) {
if ($i) { $sql .= ', ' }
if ( defined( $values[$i] ) ) {
if ( ref( $values[$i] ) eq 'SCALAR' ) {
$sql .= ${ $values[$i] };
}
elsif ( ref( $values[$i] ) eq 'ARRAY' ) {
$sql .= $values[$i][0];
}
else {
$sql .= '?';
push( @bind_params, $values[$i] );
}
}
else {
$sql .= 'NULL';
}
}
$sql .= ')';
}
elsif ( !ref($fields) and $fields ) {
$sql .= $fields;
}
else {
die 'DBIx::Abstract: insert must have fields';
}
$self->__logwrite_sql( 1, $sql, @bind_params );
$self->__mod_query( $sql, @bind_params );
return $self;
}
sub update {
my $self = shift;
my ($table, $fields, $where ) = @_;
# $table == Name of table to update
# $fields == A reference to a hash of field/value pairs containing the
# new values for those fields.
# $where == One of my handy-dandy standard where's. See __where.
my ( $sql, @keys, @values, $i );
my (@bind_params);
if ( ref($table) ) {
$where = $table->{'where'};
$fields = $table->{'fields'};
$table = $table->{'table'};
}
# "If you don't know what to do, don't do anything."
# -- St. O'Ffender, _Return of the Roller Blade Seven_
$table or die 'DBIx::Abstract: update must have table';
$sql = "UPDATE $table SET";
if ( ref($fields) eq 'HASH' ) {
@keys = sort keys %$fields;
@values = map {$fields->{$_}} @keys;
$#keys > -1 or die 'DBIx::Abstract: update must have fields';
for ( $i = 0 ; $i <= $#keys ; $i++ ) {
if ($i) { $sql .= ',' }
$sql .= ' ' . $keys[$i] . '=';
if ( defined( $values[$i] ) ) {
if ( ref( $values[$i] ) eq 'SCALAR' ) {
$sql .= ${ $values[$i] };
}
else {
$sql .= '?';
push( @bind_params, $values[$i] );
}
}
else {
$sql .= 'NULL';
}
}
}
elsif ( !ref($fields) and $fields ) {
$sql .= " $fields";
}
else {
die 'DBIx::Abstract: update must have fields';
}
my ( $moresql, @morebind ) = $self->__where($where);
$sql .= $moresql;
push( @bind_params, @morebind );
$self->__logwrite_sql( 1, $sql, @bind_params );
$self->__mod_query( $sql, @bind_params );
return $self;
}
sub select {
my $self = shift;
my ( $fields, $table, $where, $order, $extra ) = @_;
( run in 1.228 second using v1.01-cache-2.11-cpan-39bf76dae61 )