in reply to Re^3: Getting mysql data into gd
in thread Getting mysql data into gd

There are 4 or more rows of data

The query works

DEBUG: $sth = "DBI::st=HASH(0x15e6e68)" DEBUG: @row = "07:40 62.50 64.00 69.40" [0] = "07:40" [1] = "62.50" [2] = "64.00" [3] = "69.40"

We are getting only one row and the fallowing error.

Can't call method "add_point" on an undefined value at ./graph.cgi line 54.

Time is the x value and the numbers are the temp. I removed time from the query and it still fails.

Replies are listed 'Best First'.
Re^5: Getting mysql data into gd
by poj (Abbot) on Sep 03, 2017 at 19:28 UTC

    Try

    #!/usr/bin/perl use strict; use DBI; use GD::Graph::Data; use GD::Graph::bars; my $batchnumber = '20170903nervana'; my $sql = ' SELECT time, mastuntemp, LineTemp, spargtemp FROM brew_temp_tb WHERE sitename = ? AND batchnumber = ? ORDER BY time'; my $dbh = dbh(); # connect my $sth = $dbh->prepare($sql); $sth->execute('Brew',$batchnumber); my $data = GD::Graph::Data->new(); while (my @row = $sth->fetchrow_array){ $data->add_point(@row); } my $chart = GD::Graph::bars->new(); my $gd = $chart->plot($data); open(IMG, '>','bar.png') or die $!; binmode IMG; print IMG $gd->png; # connect sub dbh{ my $database = "test"; my $user = "user"; my $pw = "password"; my $dsn = "dbi:mysql:$database:localhost:3306"; my $dbh = DBI->connect($dsn, $user, $pw, { RaiseError=>1, AutoCommit=>1 } ); return $dbh; }
    poj