I am unsure if the possible. Otherwise, tell me.

I've got a PDO mysql that updates 3 fields.

$update = $mypdo->prepare("UPDATE tablename SET field1=:field1, 
                                                field2=:field2, 
                                                field3=:field3 
                                            WHERE key=:key");

However I want field3 to become up-to-date only if $update3 = true; (and therefore the update of field3 is controlled with a conditional statement)

Is easy to accomplish having a single query?

I possibly could get it done with 2 queries where I update field1 and field2 then look into the boolean increase field3 as needed inside a separate query.

//run this query to update only fields 1 and 2
$update_part1 = $mypdo->prepare("UPDATE tablename SET field1=:field1, 
                                                      field2=:field2
                                                  WHERE key=:key");

//if field3 should be update, run a separate query to update it separately
if ($update3){
  $update_part2 = $mypdo->prepare("UPDATE tablename SET field3=:field3 
                                                    WHERE key=:key");
}

But hopefully there's a method to make this happen in 1 query?

You don't have to do multiple queries. Why not just structure your query string according to that conditional, and then just pass it for your DB adapater for execution ? It may be as follow:

    $pdo = new PDO($dsn, $user, $password);

    $sql = "UPDATE table SET columnname1=:field1, columname2=:field2";

    if ( $update ) $sql .= ",columname3=:field3";

    $sql .= " WHERE key=:key";

    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(":key", $key, PDO::PARAM_INT);
    $stmt->bindParam(":field1", $field1, PDO::PARAM_STR);
    $stmt->bindParam(":field2", $field2, PDO::PARAM_STR);

    if($update) $stmt->bindParam(":field3", $field3, PDO::PARAM_STR);

    $stmt->execute();