Quando esegui un'istruzione tramite mysqli, i risultati non sono effettivamente in PHP finché non li recuperi:i risultati sono conservati dal motore DB. Quindi il mysqli_stmt
l'oggetto non ha modo di sapere quanti risultati ci sono subito dopo l'esecuzione.
Modifica il tuo codice in questo modo:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Questo non si applica al tuo esempio particolare, ma se il tuo set di risultati è grande, $stmt->store_result()
consumerà molta memoria. In questo caso, se tutto ciò che ti interessa è capire se è stato restituito almeno un risultato, non archiviare i risultati; invece, controlla semplicemente se i metadati del risultato non sono null:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;