Když provedete příkaz přes mysqli, výsledky nejsou ve skutečnosti v PHP, dokud je nenačtete - výsledky jsou drženy jádrem DB. Takže mysqli_stmt
objekt nemá žádný způsob, jak zjistit, kolik výsledků je bezprostředně po spuštění.
Upravte svůj kód takto:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
To se netýká vašeho konkrétního příkladu, ale pokud je vaše sada výsledků velká, $stmt->store_result()
zabere hodně paměti. V tomto případě, pokud vás zajímá pouze zjištění, zda byl vrácen alespoň jeden výsledek, neukládejte výsledky; místo toho stačí zkontrolovat, zda metadata výsledku nejsou null:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;