Когато изпълнявате изявление чрез mysqli, резултатите всъщност не са в PHP, докато не ги извлечете - резултатите се съхраняват от DB двигателя. Така че mysqli_stmt
object няма начин да знае колко резултата има веднага след изпълнението.
Променете кода си така:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Това не се отнася за вашия конкретен пример, но ако вашият набор от резултати е голям, $stmt->store_result()
ще консумира много памет. В този случай, ако всичко, което ви интересува, е да разберете дали е върнат поне един резултат, не съхранявайте резултатите; вместо това просто проверете дали метаданните за резултата не са нулеви:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;