Dalam mengira bilangan baris dalam jadual MySQL menggunakan MySQLi, anda mungkin menghadapi fenomena aneh di mana $result-> ;num_rows secara konsisten melaporkan kiraan 1. Mari kita siasat pendekatan yang betul.
Isunya terletak pada cara MySQLi mengendalikan hasil pertanyaan COUNT(*). Tidak seperti hasil pertanyaan biasa, yang mengandungi set baris, COUNT(*) mengembalikan satu baris dengan satu lajur yang mengandungi kiraan.
Untuk mendapatkan semula kiraan ini dengan tepat, anda perlu mengambil satu baris daripada set keputusan. Kod berikut menunjukkan penggunaan yang betul:
$result = $db->query("SELECT COUNT(*) FROM `table`"); $row = $result->fetch_row(); $count = $row[0]; echo "Count: $count";
Dengan mengambil baris pertama (dan sahaja) dan mengakses lajur pertamanya, anda memperoleh kiraan yang betul. Menggunakan $result->num_rows akan sentiasa mengembalikan 1 kerana ia mewakili bilangan baris dalam set hasil, iaitu 1 untuk COUNT(*) pertanyaan.
Ingat, untuk pertanyaan biasa yang hasilnya mengandungi berbilang baris , menggunakan $result->num_rows adalah sesuai. Walau bagaimanapun, untuk COUNT(*) pertanyaan, sentiasa ikut corak di atas untuk mendapatkan semula kiraan sebenar.
Atas ialah kandungan terperinci Mengapakah `count(*)` MySQLi Mengembalikan 1 Apabila Mengira Baris Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!