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

Pernyataan yang disiapkan MYSQLI tidak menghasilkan keluaran

Masalah awal Anda adalah Anda tidak memeriksa setiap panggilan untuk kegagalan, hanya beberapa di awal. Keduanya store_result dan bind_result juga bisa gagal.

Masalah khusus Anda (setelah Anda memperbaiki yang pertama) adalah Anda melakukan select * untuk mendapatkan banyak kolom tetapi Anda hanya mengikat satu dalam hasil. Itu terbukti dari pesan kesalahan yang Anda dapatkan dari bind_result hubungi:

Jika Anda mengubah select pernyataan untuk sesuatu seperti select id from ... , Anda akan menemukannya mulai bekerja.

Namun, dengan asumsi Anda ingin lebih banyak kolom, Anda harus menyediakan lebih banyak variabel dalam penjilidan, seperti:

$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);

Anda akan melihat saya tidak menggunakan select * di sana, lebih baik menggunakan penamaan kolom eksplisit di hampir semua situasi sehingga:

  • Anda tidak akan terkejut ketika skema DB berubah;
  • Anda hanya mendapatkan data yang Anda butuhkan;
  • Anda dapat memetakan kolom ke variabel hasil dengan benar.

Cukup banyak hanya tempat yang pernah saya temukan boleh menggunakan select * ada di alat analisis DB tempat Anda ingin mendapatkan semuanya. Jika Anda tahu apa yang Anda inginkan sebelumnya, itulah yang harus Anda minta.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan tabel ketiga ke tabel jembatan dalam asosiasi banyak ke banyak

  2. PHP Perbarui tabel MySQL menggunakan formulir HTML

  3. Mengapa memberi mysql kesalahan ER_TABLE_NOT_LOCKED sementara saya baru saja mengunci tabel?

  4. Membandingkan string dengan yang satu memiliki ruang kosong sebelumnya sementara yang lain tidak

  5. Cari array posting dalam nilai kolom yang dipisahkan koma