mysqliを介してステートメントを実行すると、結果はフェッチするまで実際にはPHPにありません。結果はDBエンジンによって保持されます。したがって、mysqli_stmt
オブジェクトには、実行直後の結果の数を知る方法がありません。
次のようにコードを変更します:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
これは特定の例には当てはまりませんが、結果セットが大きい場合は、$stmt->store_result()
大量のメモリを消費します。この場合、少なくとも1つの結果が返されたかどうかを判断するだけであれば、結果を保存しないでください。代わりに、結果のメタデータがnullでないかどうかを確認してください:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;