Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

pernyataan yang disiapkan mysqli num_rows mengembalikan 0 sementara kueri mengembalikan lebih besar dari 0

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;

Lihat manual

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;

Lihat manual



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tetapkan kembali izin akses host ke pengguna MySQL

  2. mysql - Saya menghapus tabel pengguna! bagaimana saya bisa memulihkannya?

  3. Tidak Dapat Menjatuhkan kunci asing di MySQL

  4. Persistent vs non-Persistent - Mana yang harus saya gunakan?

  5. Tomcat JDBC Conencton Pool + MySQL memberikan masalah pipa Rusak, bahkan dengan validasi koneksi