und nochmal das debugging korrigiert
[kivitendo-erp.git] / SL / DBUtils.pm
index 38acf12..1ded2d2 100644 (file)
@@ -3,7 +3,9 @@ package SL::DBUtils;
 require Exporter;
 @ISA = qw(Exporter);
 
-@EXPORT = qw(conv_i conv_date 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) = @_;
@@ -15,9 +17,18 @@ sub conv_date {
   return (defined($value) && "$value" ne "") ? $value : undef;
 }
 
+sub conv_dateq {
+  my ($value) = @_;
+  if (defined($value) && "$value" ne "") {
+    $value =~ s/\'/\'\'/g;
+    return "'$value'";
+  }
+  return "NULL";
+}
+
 sub do_query {
   my ($form, $dbh, $query) = splice(@_, 0, 3);
-
+  dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
   if (0 == scalar(@_)) {
     $dbh->do($query) || $form->dberror($query);
   } else {
@@ -65,4 +76,48 @@ 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);
+  dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
+  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;