När du kör en sats via mysqli finns resultaten inte i PHP förrän du hämtar dem -- resultaten hålls av DB-motorn. Så mysqli_stmt
objekt har inget sätt att veta hur många resultat det finns omedelbart efter exekvering.
Ändra din kod så här:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Detta gäller inte för ditt specifika exempel, men om din resultatuppsättning är stor, $stmt->store_result()
kommer att förbruka mycket minne. I det här fallet, om allt du bryr dig om är att ta reda på om minst ett resultat returnerades, spara inte resultat; istället kontrollera bara om resultatets metadata inte är null:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;