Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Kaedah `query()` MySQLi Mengembalikan Kiraan Baris Tidak Dijangka Apabila Menggunakan `COUNT(*)`?

Mengapa Kaedah `query()` MySQLi Mengembalikan Kiraan Baris Tidak Dijangka Apabila Menggunakan `COUNT(*)`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 06:55:03564semak imbas

Why Does MySQLi's `query()` Method Return an Unexpected Row Count When Using `COUNT(*)`?

Kaedah Pertanyaan MySQL Menghasilkan Kiraan Baris Tidak Dijangka

Apabila cuba mendapatkan semula kiraan baris jadual MySQL menggunakan fungsi COUNT(*) dan kaedah query() objek MySQLi, anda mungkin menemui hasil yang tidak dijangka di mana kiraan baris yang dikembalikan sentiasa 1. Ini boleh berbeza daripada hasil yang betul apabila melaksanakan pertanyaan yang sama menggunakan alat seperti phpMyAdmin.

Pemahaman the Issue

Harta num_rows bagi objek MySQLi_Result mencerminkan bilangan baris dalam set hasil yang dikembalikan oleh pertanyaan yang dilaksanakan. Walau bagaimanapun, apabila menggunakan fungsi COUNT(*), hasilnya ialah satu baris yang mengandungi nilai kiraan dan bukannya berbilang baris seperti dalam hasil pertanyaan biasa.

Pendekatan yang Betul

Untuk mendapatkan nilai kiraan yang betul menggunakan MySQLi, anda perlu mengambil baris hasil tunggal daripada objek MySQLi_Result dan mendapatkan semula nilai kiraan daripada baris tersebut. Ini boleh dicapai menggunakan kaedah fetch_row(), yang mengembalikan tatasusunan nilai lajur daripada baris pertama dalam set hasil.

Berikut ialah contoh yang menunjukkan pendekatan yang betul:

$result = $db->query("SELECT COUNT(*) FROM `table`");
$row = $result->fetch_row();
$count = $row[0];
echo 'Row count: ', $count;

Kod ini mendapatkan semula nilai kiraan daripada baris pertama dan mencetaknya.

Atas ialah kandungan terperinci Mengapa Kaedah `query()` MySQLi Mengembalikan Kiraan Baris Tidak Dijangka Apabila Menggunakan `COUNT(*)`?. 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