"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حل خطأ \"الأوامر خارج المزامنة\" في PHP/MySQLi عند تشغيل عدة بيانات معدة؟

كيفية حل خطأ \"الأوامر خارج المزامنة\" في PHP/MySQLi عند تشغيل عدة بيانات معدة؟

تم النشر بتاريخ 2024-11-08
تصفح:865

How to Resolve the \

خطأ في مزامنة أوامر PHP

عند تشغيل عدة عبارات معدة في PHP/MySQLi، من الممكن أن تواجه "أوامر خارج المزامنة" مزامنة، لا يمكنك تشغيل الأمر الآن" خطأ. يحدث هذا عندما تحاول العبارات اللاحقة التنفيذ بينما تظل بيانات النتيجة السابقة غير معالجة في المخزن المؤقت.

لتصحيح هذه المشكلة، من الضروري استخدام وظيفة mysqli_free_result() لتحرير بيانات النتيجة المخزنة بشكل صريح قبل تنفيذ الأمر التالي إفادة. بالإضافة إلى ذلك، من الضروري استدعاء الدالة next_result() على كائن mysqli بعد تنفيذ كل عبارة لدفع المؤشر الداخلي إلى مجموعة النتائج التالية.

في مثال التعليمات البرمجية المحدد، ينشأ الخطأ أثناء تنفيذ $stmt1 لأنه لم يتم مسح النتيجة من $stmt. من خلال استدعاء mysqli_free_result($stmt) بشكل صريح ومن ثم استدعاء $mysqli->next_result()، يمكنك التأكد من إفراغ المخزن المؤقت وإعادة تعيين المؤشر للعبارة التالية.

مثال التعليمات البرمجية المعدلة:

    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt);
    $stmt->fetch();

    $stmt->free_result();
    $stmt->close();

    while ($mysqli->more_results()) {
        $mysqli->next_result();
    }

    $stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1");
    $stmt1->bind_param('s', $user_id);
    $stmt1->execute();
    $stmt1->store_result();
    $stmt1->bind_result($privileges);
    $stmt1->fetch();

    $stmt1->free_result();
    $stmt1->close();

من خلال تنفيذ هذه الإصلاحات، ستتخلص من خطأ "الأوامر خارج المزامنة" وستضمن إمكانية تنفيذ البيانات المعدة اللاحقة بسلاسة.

بيان الافراج أعيد طبع هذه المقالة على: 1729135816 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3