Hi!
I'm writing a simple script to output data from a MySQL database...
Eventually I'd like to pipe it all into a .tex file and make a custom pdf
out of it.
However, I'm running into a problem: the FIRST instance of
DateTime::Format::MySQL works perfectly... but when I get to the second
one, it throws me this error:
Use of uninitialized value $input in concatenation (.) or string at
/usr/local/share/perl/5.14.2/
DateTime/Format/Builder.pm line 154.
Invalid date format: at ./logbook.pl line 29
Here's my code:
#! /usr/bin/perl
#use strict;
use DBI;
use DateTime::Format::MySQL;
my $dbh = DBI->connect(
"dbi:mysql:dbname=dbname",
"user",
"password",
{ RaiseError => 1 },
) or die $DBI::errstr;
my $sth = $dbh->prepare("select l.id, l.date_added, l.username,
l.entry, c.comment_date_added, c.username as cuser,
c.comment from logbook as l
left join comments as c on l.id = c.logbook_id
order by l.date_added desc");
$sth->execute();
my $row;
while ($row = $sth->fetchrow_hashref()) {
my $id = $row->{id};
my $date_added =
DateTime::Format::MySQL->parse_timestamp($row->{date_added});
my $username = $row->{username};
my $entry = $row->{entry};
my $comment_date =
DateTime::Format::MySQL->parse_timestamp($row->{comment_date_added});
my $comment_username = $row->{cuser};
my $comment = $row->{comment};
print "Entry Id: $id, Entry Date: " . $date_added->strftime("%a, %d
%b %Y at %l:%M %p") . "\nUsername: $username\n\n\t$entry\n\n";
if($row->{comment} ne '') {
print "\t\tDate: " . $comment_date->strftime("%a, %d %b %Y
at %l:%M %p") . "\n";
print "\t\tUsername: $username\n";
print "\t\t\t $comment\n\n";
}
}
$sth->finish();
$dbh->disconnect();
Can anyone give me a tip? I've no idea what I'm doing wrong here... if I
run this without the 2nd timestamp format it works great, I'd just like the
readability.