IS::get_customer auf neue DBUtils umgestellt,
[kivitendo-erp.git] / SL / DBUtils.pm
index ecb809b..7145dc2 100644 (file)
@@ -3,7 +3,9 @@ package SL::DBUtils;
 require Exporter;
 @ISA = qw(Exporter);
 
-@EXPORT = qw(conv_i conv_date conv_dateq do_query selectrow_query do_statement dump_query);
+@EXPORT = qw(conv_i conv_date conv_dateq do_query selectrow_query do_statement
+             dump_query quote_db_date selectall_hashref_query selectfirst_hashref_query
+             prepare_execute_query);
 
 sub conv_i {
   my ($value, $default) = @_;
@@ -33,6 +35,7 @@ sub do_query {
     $dbh->do($query, undef, @_) ||
       $form->dberror($query . " (" . join(", ", @_) . ")");
   }
+  dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")");
 }
 
 sub selectrow_query {
@@ -74,4 +77,47 @@ sub dump_query {
   $main::lxdebug->message($level, $msg . $query);
 }
 
+sub quote_db_date {
+  my ($str) = @_;
+  return "NULL" unless defined $str;
+  return "current_date" if $str =~ /current_date/;
+  $str =~ s/'/''/g;
+  return "'$str'";
+}
+
+sub prepare_execute_query {
+  my ($form, $dbh, $query) = splice(@_, 0, 3);
+  my $sth = $dbh->prepare($query) || $form->dberror($query);
+  if (scalar(@_) != 0) {
+    $sth->execute(@_) || $form->dberror($query . " (" . join(", ", @_) . ")");
+  } else {
+    $sth->execute() || $form->dberror($query);
+  }
+
+  return $sth;
+}
+
+sub selectall_hashref_query {
+  my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+  my $sth = prepare_execute_query($form, $dbh, $query, @_);
+  my $result = [];
+  while (my $ref = $sth->fetchrow_hashref()) {
+    push(@{ $result }, $ref);
+  }
+  $sth->finish();
+
+  return $result;
+}
+
+sub selectfirst_hashref_query {
+  my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+  my $sth = prepare_execute_query($form, $dbh, $query, @_);
+  my $ref = $sth->fetchrow_hashref();
+  $sth->finish();
+
+  return $ref;
+}
+
 1;