Lo que a primera vista veo es que las variables $Universidad, $Titulo, etc. siempre van a coger los valores del último registro del query, ya que primero recorre toto los registros y luego recoges los campos. Tambien te has dejado declarar la variable $Doctor.
No he ententido mucho lo que quieres hacer, pero no seria mejo hacerlo así?:
Código PHP:
<?php
//Recupero la formacion
$SelectFOR=mysql_query("SELECT universidad,titulo,FP,diplomatura,licenciatura,grado,master,doctor FROM formacion WHERE idPER=$PKPER");
while ($row = mysql_fetch_array($SelectFOR, MYSQL_NUM)) {
$Universidad= $row [0];
$Titulo=$row [1];
$FP=$row [2];
$Diplomado=$row [3];
$Licenciado=$row [4];
$Grado=$row [5];
$Master=$row [6];
$Doctor=$row [7];
//publico la formación
if ($Doctor=="si"){echo "Doctor por la $Universidad";}
if ($Master=="si") {echo "Master por la $Universidad";}
if ($Grado=="si") {echo "Grado en $Titulo por la $Universidad";}
if ($Licenciado=="si") {echo "Licenciado en $Titulo por la $Universidad";}
if ($Diplomado=="si") {echo "Diplomado en $Titulo por la $Universidad";}
if ($FP=="si") {echo "Técnico en $Titulo por la $Universidad";}
}
?>
EDIT: Se me adelanto Marvin :D