So for all those that are interested, here is a dumbed down verson of what i ended up doing:
$stcars = array();
// Create connection
try {
$db = new PDO('mysql:host=localhost;dbname=Reports;charset=utf8', 'XXX', 'XXX');
$db->query('hi'); //invalid query!
} catch(PDOException $ex) {
echo "An Error occured!" . $ex->getMessage(); //user friendly message
}
$stmt = $db->prepare('SELECT CarNumber FROM STcars WHERE CarNumber > 0');
if ($stmt->execute()){
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
array_push($stcars, $row[CarNumber]);
}// end while
}// end if
$DateFrom = $_POST["DateFrom"];
$DateTo = $_POST["DateTo"];
$DateToArray = date('m/d/Y', strtotime($DateTo . ' + 1 day'));
$period = new DatePeriod(
new DateTime($DateFrom),
new DateInterval('P1D'),
new DateTime($DateToArray)
);
foreach($period as $date)
{
$daterange[] = $date->format('m/d/Y');
}
// MS SQL Server with PDO_DBLIB
$DBH = new PDO("dblib:host=$myServer;dbname=$myDB", $myUser, $myPass);
for ($i = 0; $i < count($stcars); ++$i) {
$CarNumber = $stcars[$i];
$STH3 = $DBH->query("SELECT dbo.Driver.DriverNumber, dbo.Driver.DriverName, dbo.DriverLogon.LogonTime, dbo.DriverLogon.LogoffTime, dbo.Vehicle.RegistrationNumber, dbo.OwnerOperator.OOName FROM dbo.Driver INNER JOIN dbo.DriverLogon ON dbo.Driver.DriverID = dbo.DriverLogon.DriverID INNER JOIN dbo.Vehicle ON dbo.DriverLogon.VehicleID = dbo.Vehicle.VehicleID INNER JOIN dbo.OwnerOperator ON dbo.Vehicle.OperatorID = dbo.OwnerOperator.OwnerOperatorID WHERE dbo.Vehicle.CarNumber = '$CarNumber' AND dbo.DriverLogon.LogonTime >= '$DateFrom $Beginning' AND dbo.DriverLogon.LogoffTime <= '$DateTo $End' AND dbo.Driver.DriverNumber != '7777' AND dbo.Driver.DriverNumber != '83890';");
$STH3->setFetchMode(PDO::FETCH_OBJ);
while($row3 = $STH3->fetch()) {
$logonday = date("D", strtotime($row3->LogonTime));
$chkStartTime = strtotime($row3->LogonTime);
$chkEndTime = strtotime($row3->LogoffTime);
$Tplate = $row3->RegistrationNumber;
$Operator = $row3->OOName;
$logontime = gmdate("D d/m/Y H:i:s", strtotime($row3->LogonTime));
$logofftime = gmdate("D d/m/Y H:i:s", strtotime($row3->LogoffTime));
for ($e = 0; $e < count($daterange); ++$e) {
$Date = $daterange[$e];
$day = date("D", strtotime($Date));
if(strpos( $day, $Mon ) !== FALSE){
$startTime = strtotime($Date . " " . $Beginning);
$endTime = strtotime($Date . " " . $End);
if($chkStartTime >= $endTime || $chkEndTime <= $startTime){}else
{
echo "<tr>" ;
echo "<td>" . $day . "</td> ";
echo "<td>" . $row3->DriverNumber . "</td> ";
echo "<td>" . $row3->DriverName . "</td> ";
echo "<td>" . $Operator . "</td> ";
echo "<td>" . $CarNumber . "</td> ";
echo "<td>" . $Tplate . "</td> ";
echo "<td>" . $logontime . "</td> ";
echo "<td>" . $logofftime . "</td> ";
//echo "<td>" . "Logon after Time End or Logoff before Time Start" . "</td> ";
//echo "<td>" . gmdate("D d/m/Y G:i:s", strtotime($Date . " " . $Beginning)) . "</td> ";
//echo "<td>" . gmdate("D d/m/Y G:i:s", strtotime($Date . " " . $End)) . "</td> ";
echo "</tr>" ;
$list1 ="$day, $row3->DriverNumber, $row3->DriverName, $Operator, $CarNumber, $Tplate, $logontime, $logofftime " . "\n";
fwrite($handle, $list1);
}