Quando você executa uma instrução através do mysqli, os resultados não estão realmente em PHP até que você os busque -- os resultados são mantidos pelo mecanismo de banco de dados. Então o
mysqli_stmt
objeto não tem como saber quantos resultados existem imediatamente após a execução. Modifique seu código assim:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Consulte o manual
Isso não se aplica ao seu exemplo específico, mas se o conjunto de resultados for grande,
$stmt->store_result()
consumirá muita memória. Nesse caso, se tudo o que importa é descobrir se pelo menos um resultado foi retornado, não armazene resultados; em vez disso, apenas verifique se os metadados do resultado não são nulos:$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;
Consulte o manual