+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_query {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+ dump_query(LXDebug::QUERY, '', $query, @_);
+
+ my $sth = $dbh->prepare($query) || $form->dberror($query);
+
+ $main::lxdebug->leave_sub(2);
+
+ return $sth;
+}
+
+sub prepare_execute_query {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+ dump_query(LXDebug::QUERY, '', $query, @_);
+
+ my $sth = $dbh->prepare($query) || $form->dberror($query);
+ if (scalar(@_) != 0) {
+ $sth->execute(@_) || $form->dberror($query . " (" . join(", ", @_) . ")");
+ } else {
+ $sth->execute() || $form->dberror($query);
+ }
+
+ $main::lxdebug->leave_sub(2);
+
+ return $sth;
+}
+
+sub selectall_hashref_query {
+ $main::lxdebug->enter_sub(2);
+
+ 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();
+
+ $main::lxdebug->leave_sub(2);
+
+ return $result;
+}
+
+sub selectall_array_query {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+ my $sth = prepare_execute_query($form, $dbh, $query, @_);
+ my @result;
+ while (my ($value) = $sth->fetchrow_array()) {
+ push(@result, $value);
+ }
+ $sth->finish();
+
+ $main::lxdebug->leave_sub(2);
+
+ return @result;
+}
+
+sub selectfirst_hashref_query {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+ my $sth = prepare_execute_query($form, $dbh, $query, @_);
+ my $ref = $sth->fetchrow_hashref();
+ $sth->finish();
+
+ $main::lxdebug->leave_sub(2);
+
+ return $ref;
+}
+
+sub selectfirst_array_query {
+ $main::lxdebug->enter_sub(2);
+
+ my ($form, $dbh, $query) = splice(@_, 0, 3);
+
+ my $sth = prepare_execute_query($form, $dbh, $query, @_);
+ my @ret = $sth->fetchrow_array();
+ $sth->finish();
+
+ $main::lxdebug->leave_sub(2);
+
+ return @ret;
+}
+