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
}