Your while loop cannot be used inside a string concatenation.
$html ='.....
</tr>';
while($row = $statement->fetch()){
if(($a%2) == 0){
$html .= '<tr class="odd">
<td> ' . $a . '</td>
<td> ' . getProductNameFromId($row['pid']) . '</td>
<td>' . $row['amount'] . '</td>
<td>' . $row['shipmentdate'] . '</td>
</tr>';
$a++; }else{
$html .= '<tr class="even">
<td> ' . $a . '</td>
<td> ' . getProductNameFromId($row['pid']) . '</td>
<td>' . $row['amount'] . '</td>
<td>' . $row['shipmentdate'] . '</td>
</tr>';
$a++; }
}
$html .= ' </table>
.....';