selectfirst_hashref_query selectfirst_array_query
selectall_hashref_query selectall_array_query
selectall_as_map
+ selectall_ids
prepare_execute_query prepare_query
create_sort_spec does_table_exist
add_token);
my %hash;
if ('' eq ref $value_col) {
while (my $ref = $sth->fetchrow_hashref()) {
- $hash{$ref->{$key_col}} = $ref->{$value_col};
+ $hash{$ref->{$key_col} // ''} = $ref->{$value_col};
}
} else {
while (my $ref = $sth->fetchrow_hashref()) {
- $hash{$ref->{$key_col}} = { map { $_ => $ref->{$_} } @{ $value_col } };
+ $hash{$ref->{$key_col} // ''} = { map { $_ => $ref->{$_} } @{ $value_col } };
}
}
return %hash;
}
+sub selectall_ids {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query, $key_col) = splice(@_, 0, 4);
+
+ my $sth = prepare_execute_query($form, $dbh, $query, @_);
+
+ my @ids;
+ while (my $ref = $sth->fetchrow_arrayref()) {
+ push @ids, $ref->[$key_col];
+ }
+
+ $sth->finish;
+
+ $main::lxdebug->leave_sub(2);
+
+ return @ids;
+}
+
sub create_sort_spec {
$main::lxdebug->enter_sub(2);
=head1 NAME
-SL::DBUTils.pm: All about Databaseconections in Lx
+SL::DBUTils.pm: All about database connections in kivitendo
=head1 SYNOPSIS
DBUtils relies heavily on two parameters which have to be passed to almost every function: $form and $dbh.
- $form is used for error handling only. It can be omitted in theory, but should not.
- - $dbh is a handle to the databe, as returned by the DBI::connect routine. If you don't have an active connectiong, you can query $form->get_standard_dbh() to get a generic no_auto connection. Don't forget to commit in this case!
+ - $dbh is a handle to the database, as returned by the DBI::connect routine. If you don't have an active connection, you can query $form->get_standard_dbh() to get a generic no_auto connection. Don't forget to commit in this case!
Every function here should accomplish the follwing things: