Memahami Perbezaan Antara bind_result() dan get_result()
Apabila menanyakan pangkalan data menggunakan pernyataan yang disediakan, dua kaedah utama untuk mendapatkan semula keputusan wujud: bind_result() dan get_result (). Setiap kaedah mempunyai tujuan tertentu, dan terdapat kebaikan dan keburukan untuk menggunakan satu daripada yang lain.
bind_result()
Tujuan:
- Mengikat lajur hasil tertentu kepada pembolehubah untuk mendapatkan semula yang cekap.
- Berguna apabila anda mengetahui yang khusus lajur yang anda perlukan dan ingin mengaksesnya secara individu.
Contoh:
$query = "SELECT id, first_name, last_name FROM table WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result ($id, $first_name, $last_name);
$stmt->fetch();
Kebaikan:
- Berfungsi dengan versi PHP yang lebih lama.
- Mengembalikan pembolehubah berasingan untuk setiap lajur, membolehkannya mudah akses.
Keburukan:
- Memerlukan penyenaraian manual semua pembolehubah.
- Boleh menjadi menyusahkan apabila bekerja dengan besar atau dinamik menukar set hasil.
- Kod mesti dikemas kini jika struktur jadual perubahan.
get_result()
Tujuan:
- Mengambil keseluruhan set hasil sebagai tatasusunan atau objek bersekutu/dikira .
- Sesuai apabila anda perlu mengakses semua lajur atau lelaran melalui hasil.
Contoh:
$query = "SELECT * FROM table WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt- >get_result();
$row = $result->fetch_assoc();
Kebaikan:
- Mengembalikan tatasusunan atau objek dengan semua data, menghapuskan keperluan untuk pembolehubah manual mengikat.
- Membolehkan untuk mendapatkan semula pukal menggunakan fetch_all().
Keburukan:
- Memerlukan pemacu asli MySQL (mysqlnd).
Penghadan dan Perbezaan
-
Lajur Padanan: bind_result() memerlukan penyenaraian eksplisit lajur dalam pertanyaan, manakala get_result() secara automatik memadankan lajur dengan kunci tatasusunan.
-
Pengendalian Ralat: bind_result() tidak menyediakan akses segera kepada mesej ralat, manakala get_result() menimbulkan pengecualian pada ralat.
-
Prestasi: Dalam sesetengah kes, bind_result() mungkin lebih cekap, terutamanya untuk set hasil yang kecil.
Ringkasnya, bind_result() ialah kaedah ringan untuk mendapatkan semula lajur tertentu, manakala get_result() ialah pilihan yang lebih serba boleh yang memudahkan pemprosesan hasil. Pilihan antara kedua-duanya bergantung pada keperluan khusus permohonan anda.
Atas ialah kandungan terperinci `bind_result()` vs. `get_result()`: Kaedah Mendapatkan Keputusan MySQLi Yang Mana Perlu Anda Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!