Rumah >pangkalan data >tutorial mysql >`bind_result()` vs. `get_result()` dalam MySQLi: Kaedah Mendapatkan Data Yang Mana Perlu Saya Pilih?

`bind_result()` vs. `get_result()` dalam MySQLi: Kaedah Mendapatkan Data Yang Mana Perlu Saya Pilih?

Barbara Streisand
Barbara Streisandasal
2024-12-14 21:27:11130semak imbas

`bind_result()` vs. `get_result()` in MySQLi: Which Data Retrieval Method Should I Choose?

bind_result vs. get_result: Perbandingan dan Contoh Komprehensif

Pengenalan: Memahami Perbezaan

Apabila bekerja dengan pertanyaan MySQL dalam PHP, pembangun mempunyai pilihan untuk mendapatkan semula data menggunakan dua kaedah: bind_result() dan get_result(). Walaupun kedua-duanya mencapai matlamat yang sama untuk mendapatkan data, mereka mempunyai ciri dan kelebihan yang berbeza. Artikel ini bertujuan untuk memberikan perbandingan berasaskan contoh kaedah ini, menyerlahkan kebaikan dan keburukan, had dan perbezaannya.

Menggunakan bind_result()

Kaedah bind_result() membenarkan pembangun mengikat pembolehubah kepada lajur set hasil. Ini berguna apabila bilangan dan susunan lajur dalam keputusan diketahui terlebih dahulu.

Contoh:

$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();

$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    // Process the data
}

Dalam contoh ini, kaedah bind_result() mengikat pembolehubah $id, $first_name, $last_name dan $username kepada lajur masing-masing dalam set hasil. Apabila baris diambil, nilai daripada lajur ini ditetapkan secara automatik kepada pembolehubah terikat.

Menggunakan get_result()

Kaedah get_result() mendapatkan semula keseluruhan keputusan yang ditetapkan sebagai objek, membenarkan pembangun untuk bekerja dengan data sebagai tatasusunan tatasusunan bersekutu atau objek.

Contoh:

$query2 = 'SELECT * FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query2);
$stmt->bind_param('i', $id);
$stmt->execute();

$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    // Process the data
}

Dalam contoh ini, kaedah get_result() mengembalikan objek yang mengandungi set hasil. Kaedah fetch_assoc() kemudiannya digunakan untuk mendapatkan semula setiap baris sebagai tatasusunan bersekutu, dengan kekunci mewakili nama lajur.

Kebaikan dan Keburukan

bind_result()

  • Kebaikan:

    • Berfungsi dengan versi lama PHP
    • Mengembalikan berasingan pembolehubah
  • Keburukan:

    • Memerlukan penyenaraian semua pembolehubah secara manual
    • Memerlukan kod tambahan untuk mendapatkan baris sebagai tatasusunan
    • Kod mesti dikemas kini dengan perubahan dalam jadual struktur

get_result()

  • Kebaikan:

    • Mengembalikan tatasusunan atau objek bersekutu/dihitung secara automatik
    • Membenarkan kaedah fetch_all() untuk mendapatkan semula semua baris sekaligus
  • Keburukan:

    • Memerlukan pemacu asli MySQL (mysqlnd)

Limitation

Kedua-dua bind_result() dan get_result() mempunyai had:

  • bind_result() memerlukan bilangan dan susunan lajur dalam set hasil untuk diketahui terlebih dahulu.
  • get_result() memerlukan penggunaan pemacu asli MySQL (mysqlnd).

Kesimpulan

Pilihan antara menggunakan bind_result() dan get_result() bergantung pada keperluan khusus permohonan. bind_result() berguna apabila bilangan dan susunan lajur dalam set hasil diketahui dan data perlu disimpan dalam pembolehubah berasingan. get_result(), sebaliknya, lebih mudah apabila berurusan dengan set hasil dinamik atau apabila data perlu diakses sebagai tatasusunan atau objek.

Atas ialah kandungan terperinci `bind_result()` vs. `get_result()` dalam MySQLi: Kaedah Mendapatkan Data Yang Mana Perlu Saya Pilih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn