Your problem is that each column has the same name. When your result is converted to an PHP array the later columns overwrite the first column with the same index / column name. You have to give each column a unique identifier, to access each single value.
SELECT *, p.firstname as p_firstname, p.lastname AS p_lastname,
p1.first_name AS p1_firstname, [...]
FROM albums a
INNER JOIN people p ON a.idauthor = p.id
INNER JOIN people p1 ON a.idcompositor = p1.id
INNER JOIN people p2 ON a.idfeat = p2.id
where a.idalbum=:id
As an alternative you can use another fetch style, which inserts the columns by its column number into the array. (If you are using PDO, see http://www.php.net/manual/en/pdostatement.fetch.php)