¿Cómo construyo una declaración PDO parametrizada en PHP para una consulta dinámica?

Disculpas si esto ya se ha preguntado. He visto respuestas sobre SQL estáticos, pero en este caso me gustaría usar PDO-> prepare () para una cadena de consulta que se crea dinámicamente en tiempo de ejecución.

Desglosando en un ejemplo simple:

$TempSQL = "SELECT field1, field2, field3 FROM table WHERE ";

if ($numberParams == 1) {
    $TempSQL = $TempSQL . " field1 = '$val1' ";
} else {
    $TempSQL = $TempSQL . " field2 = '$val2' ";
    $TempSQL = $TempSQL . " AND field3 = '$val3' ";
}

db->query($TempSQL);

¿Cómo reescribo esto como un db-> prepare ()?

¿Debería construir la declaración-> execute (array (': param' => $ var))) también sobre la marcha?

¿Hay una manera mejor / más ordenada?

Respuestas a la pregunta(3)

Su respuesta a la pregunta