خطأ في مزامنة أوامر 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();
من خلال تنفيذ هذه الإصلاحات، ستتخلص من خطأ "الأوامر خارج المزامنة" وستضمن إمكانية تنفيذ البيانات المعدة اللاحقة بسلاسة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3