Comece depurando seu resultado real do banco de dados.
if (isset($_REQUEST['customer_id'])) {
$id = intval($_REQUEST['customer_id']);
$query = "SELECT * FROM customers WHERE customer_id=:id";
$stmt = $pdo->prepare( $query );
$stmt->execute(array(':id'=>$id));
$row=$stmt->setFetchMode(PDO::FETCH_ASSOC);
Você NÃO está verificando erros.
Duas sugestões:
1) Você está usando
<?php echo $row['first_name'];?>
. Se você inspecionar o conjunto de resultados, poderá ver o que há de errado com isso. Apenas imprima o resultado na variável $row (incorretamente nomeada) com print_r() e similares. Tenho certeza que você verá o que deu errado. 2) Eu aconselho fortemente CONTRA o uso de $_REQUEST. É preguiçoso e propenso a erros. Você sabe de onde veio o 'customer_id'? Sessão? Biscoito? PUBLICAR? Ou Obter? Se você está passando informações via GET => use GET