Mi sa che stai facendo un po' di confusione:

$num_rows = $result->num_rows;
if ($num_rows($query) == 0) {

Da dove salta fuori $result? mysqli::num_rows è un intero, quindi che senso ha $num_rows($query) ?

Dovrebbe essere

Codice PHP:
$query $mysqli->query("SELECT * FROM test_dati WHERE nome = '$nome' AND password = '$password'");

if(!
$query) die("Errore query");

if (
$query->num_rows== 0) {
insert...
} else {
già registrato