Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Commands Out of Sync' MySQLi?

Bagaimana untuk Menyelesaikan Ralat 'Commands Out of Sync' MySQLi?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 02:34:11300semak imbas

How to Resolve the MySQLi

Ralat "Commands Out of Sync" dalam MySQLi: Penjelasan Komprehensif

MySQLi membuang ralat "Commands out of sync" apabila ralat baharu pertanyaan dicuba semasa masih terdapat baris yang belum dibaca daripada baris sebelumnya pertanyaan.

Sebab Ralat

Protokol klien MySQL memerlukan semua hasil daripada pertanyaan diambil sebelum pertanyaan baharu boleh dilaksanakan. Ini memastikan konsistensi dalam mengendalikan set hasil dan menghalang kehilangan data.

Penyelesaian

mysqli_store_result() atau mysqli_result::fetch_all():

Prafetch semua baris daripada pertanyaan luar menggunakan mysqli_store_result() atau ambil keseluruhan set hasil sebagai tatasusunan menggunakan mysqli_result::fetch_all(). Ini menimbal keputusan dalam klien, membolehkan berbilang pertanyaan dilaksanakan.

Prosedur Tersimpan dan mysqli_multi_query():

Prosedur tersimpan boleh mengembalikan berbilang set hasil. Untuk mengendalikan ini, gunakan mysqli_multi_query() dan ulangi hasil menggunakan mysqli_next_result() sehingga semua set hasil diproses.

Code Snippet

Berikut ialah versi diubah suai bagi kod daripada soalan, menggunakan mysqli_store_result():

$result = mysqli_query($db, $sql) or exit(mysqli_error($db));

if ($result) {
    $result->store_result(); // Buffer the result set
    echo "<table border='1'>
        <tr><th>id</th>
        <th>name</th>
        <th>parent_id</th>
        <th>parent_name</th>
        <th>level</th>
        <th>email</th></tr>";

    while ($row = mysqli_fetch_assoc($result)) {
        $aid = $row["id"];
        $sql2 = "SELECT * FROM members WHERE MEMNO = '$aid'";
        $result2 = mysqli_query($db, $sql2) or exit(mysqli_error($db));

        if ($result = mysqli_fetch_assoc($result2)) {
            $fname = $ newArray['FNAME'];
            $lname = $newArray['LNAME'];
            $mi = $newArray['MI'];
            $address = $newArray['ADDRESS'];
            $city = $newArray['CITY'];
            $state = $newArray['STATE'];
            $zip = $newArray['ZIP'];
            $kdate = $newArray['KDATE'];
            $date = abs(strtotime(date('m/d/Y')) - strtotime(date($kdate))) / (60 * 60 * 24);
        }

        echo sprintf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
        $row["id"],$row["name"],
        $row["parent_id"],$row["parent_name"],
        $row["level"],$row["email"]);
    }

    echo "</table>";
}
mysqli_free_result($result);
mysqli_close($db);

Kemungkinan Penambahbaikan Reka Bentuk

Menyimpan data hierarki dalam pangkalan data hubungan boleh membawa kepada pertanyaan yang kompleks. Pertimbangkan untuk menggunakan model alternatif, seperti set bersarang atau senarai bersebelahan, untuk memudahkan penyimpanan dan pengambilan data.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Commands Out of Sync' MySQLi?. 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