На основе вашего примера сценария это будет сделано так же, но это поместит условный оператор в запрос на уровне базы данных, а не в сценарии на уровне приложения:
<?php
try {
$sql = "SELECT * FROM clients WHERE history = 'clients'" // WHERE history" or die(mysql_error());
foreach ($dbh->query($sql) as $row) {
echo "1212";
}
$dbh = null;
} catch (PDOException $e) {
echo "Failed: " . $e->getMessage();
$dbh->rollback();
}
?>
Конечно, он, очевидно, не будет отражать строки, не относящиеся к клиенту, как это сделал ваш пример, но из того, что я понял по вашему вопросу, именно это и произошло на самом деле.