Stai sovrascrivendo il tuo $result
variabile con la tua seconda affermazione:
$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query); // result does not contain the array anymore
Cambia il nome in qualcos'altro. Non ha nulla a che fare con call-by-reference o simili.
In realtà, la tua prima assegnazione dei valori non è necessaria in quanto $row
è già un array:
$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];
Potresti semplicemente fare:
$row = mysql_fetch_assoc($result);
// at the end
return $row;
Quindi non devi nemmeno cambiare il nome della tua variabile per la seconda istruzione. Ma considera di usare nomi di variabili significativi.