PHP7 + JavaScript, 62 61 58 bytes
Isso foi realmente mais desafiador do que eu esperava! Estou bastante surpreso com a duração do meu código.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
Como funciona?
Isso funciona selecionando o código a ser executado, a partir da matriz.
A detecção de PHP e JavaScript é feita com +![].
No PHP, [](matriz vazia) é um valor falso, enquanto no JavaScript é um valor verdadeiro (objetos (exceto null) são sempre verdadeiros, até mesmo new Boolean(false)é verdade!).
Mas, eu preciso obtê-lo com um valor numérico; portanto, basta usar a not( !) e convertê-lo em inteiro (com o +).
Agora, o PHP gera o valor 1, enquanto o JavaScript produz 0.
A colocação do código dentro de uma matriz, nesses índices, permitirá selecionar o código correto para o idioma desejado.
Isso pode ser usado como [JS,PHP][+![]], para obter o código do idioma correto.
Em poliglotas anteriores, eu usei '\0'=="\0", que é trueem JavaScript (desde \0é analisado como a NULL-byte) e falseem PHP (a '\0'não ser analisado como a NULL-byte, comparando a string literal \0com o NULL-byte).
Estou feliz por ter conseguido reduzir essa verificação para +!'0'.
Estou ainda mais feliz com o @rckd , que o reduziu à versão atual!
A partir daí, é simplesmente evalo código necessário.
PHP
O PHP executará echo$argv[1]**.5(equivalente a echo sqrt($argv[1]);raiz quadrada do número), recebendo o valor do segundo argumento e exibindo-o na saída padrão.
Javascript
O JavaScript é executado alert((_=prompt())*_), o que exibe o número ao quadrado em um alert.
Obrigado a @rckd por salvar 1 byte e a @ user59178 por salvar 3 bytes!