Saat Anda menjalankan pernyataan melalui mysqli, hasilnya tidak benar-benar dalam PHP sampai Anda mengambilnya -- hasilnya disimpan oleh mesin DB. Jadi mysqli_stmt
objek tidak memiliki cara untuk mengetahui berapa banyak hasil yang ada segera setelah eksekusi.
Ubah kode Anda seperti ini:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Ini tidak berlaku untuk contoh khusus Anda, tetapi jika kumpulan hasil Anda besar, $stmt->store_result()
akan memakan banyak memori. Dalam hal ini, jika semua yang Anda pedulikan adalah mencari tahu apakah setidaknya satu hasil dikembalikan, jangan simpan hasil; sebagai gantinya, cukup periksa apakah metadata hasil tidak nol:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;