首頁 > 資料庫 > mysql教程 > 如何解決 MySQLi「指令不同步」錯誤?

如何解決 MySQLi「指令不同步」錯誤?

Linda Hamilton
發布: 2024-12-13 02:34:11
原創
299 人瀏覽過

How to Resolve the MySQLi

MySQLi 中的「指令不同步」錯誤:全面解釋

當新的指令出現時,MySQLi會拋出「指令不同步」錯誤在上一個查詢中仍有未讀行的情況下嘗試查詢

錯誤原因

MySQL 客戶端協定要求在執行新查詢之前取得查詢的所有結果。這可以確保處理結果集的一致性並防止資料遺失。

解決方案

mysqli_store_result() 或mysqli_result::fetch_all():

使用以下命令從外部查詢預取所有行mysqli_store_result() 或使用mysqli_result::fetch_all() 以陣列形式取得整個結果集。這會在客戶端緩衝結果,從而允許執行多個查詢。

預存程序和 mysqli_multi_query():

預存程序可以傳回多個結果集。要處理此問題,請使用 mysqli_multi_query() 並使用 mysqli_next_result() 迭代結果,直到處理完所有結果集。

程式碼片段

這是以下的修改版本問題中的程式碼,使用mysqli_store_resu lt():

$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);
登入後複製

可能的設計改進

在關聯式資料庫中儲存分層資料可能會導致複雜的查詢。考慮使用替代模型,例如嵌套集或鄰接列表,來簡化資料儲存和檢索。

以上是如何解決 MySQLi「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板