setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //ALTER TABLE `kimai15_pct` //ADD COLUMN `pct_billable` TINYINT(1) NOT NULL DEFAULT '0' AFTER `pct_internal`; $query = <<") ELSE CONCAT("") END as 'Billabale', CASE WHEN p.pct_billable = 1 THEN CONCAT("") ELSE CONCAT("") END as 'Non-billable', CASE WHEN p.pct_billable = 2 THEN CONCAT("") ELSE CONCAT("") END as 'Unproductive' from kimai15_pct p inner join kimai15_knd k on p.pct_kndID=k.knd_ID where p.pct_visible = 1 order by k.knd_name, p.pct_name EOD; echo "

"; //first pass just gets the column names echo ''; $result = $con->query($query); //return only the first row (we only need field names) $row = $result->fetch(PDO::FETCH_ASSOC); echo " \n"; foreach ($row as $field => $value) { echo " \n"; } // end foreach echo " \n"; //second query gets the data $data = $con->query($query); $data->setFetchMode(PDO::FETCH_ASSOC); foreach ($data as $row) { echo " \n"; foreach ($row as $name => $value) { echo " \n"; } // end field loop echo " \n"; } // end record loop echo "
$field
$value
\n"; echo ""; echo ""; } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } // end try ?>