Você está substituindo seu
$result
variável com sua segunda declaração:$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query); // result does not contain the array anymore
Mude o nome para outra coisa. Não tem nada a ver com chamada por referência ou algo assim.
Na verdade, sua primeira atribuição dos valores é desnecessária, pois
$row
já é uma matriz:$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];
Você poderia apenas fazer:
$row = mysql_fetch_assoc($result);
// at the end
return $row;
Então você nem precisa alterar o nome da sua variável para a segunda instrução. Mas considere usar nomes de variáveis significativos.