Forse perche' non hai messo la chiave di ricerca nella SELECT (la WHERE condition).

Occorre pero' avere alcune certezze se fai una select di quel tipo: prima di tutto che sei sicura che SQL ti ritorni una ed una sola ricorrenza a fronte della chiave di ricerca, altrimenti, se non sbaglio, ti ritornera' casualmente una o l'ultima ricorrenza presente nel DB con quella chiave.

Tanto per fare un esempio concreto:

Codice PHP:
$cognome "";
$nome    "";
$sql "SELECT AD_Cognome,            " .
       
"       AD_Nome                " .
       
"  FROM $tabella               " .
       
" WHERE AD_Matricola = '$matr' ";
$query mysql_query($sql) or die (errore_server_istr ($sql));
$dati  mysql_fetch_array($query);
$num   mysql_numrows($query);
if (
$num <> 0) {
    
$cognome $dati['AD_Cognome'];
    
$nome    $dati['AD_Nome'];

Prima di memorizzare i dati, verifico se il DB mi ha ritornato qualcosa (if ($num <> 0) {)

Altrimenti l'esempio di telegio puo' andare benissimo per recuperare piu' righe dal DB, magari con l'aggiunta della WHERE condition nella SELECT.

Prova ad adattare l'esempio al tuo caso.