Hãy thử sử dụng hàm MySQL, nếu nó trả về kết quả đúng, vấn đề sẽ là PDO:rowCount()
$stmt = $db->prepare('INSERT INTO table (`id`, `name`, `email`) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE `name` = ?, `email` = ? ;');
$stmt->execute( array ( $id, $name, $email, $name, $email ) );
$rc = $db->query("SELECT ROW_COUNT()")->fetchColumn();
echo $rc;