في محاولة لتعزيز الوصول إلى قاعدة البيانات مع شركة تنمية نفط عمان، يواجه العديد من المطورين تحديات، لا سيما مع "أين... في" الاستعلامات. دعونا نتعمق في التعقيدات ونكتشف النهج المناسب لاستخدام قائمة العناصر ضمن بيان مُعد لشركة تنمية نفط عمان.
فكر في السيناريو الذي تحتاج فيه إلى حذف عناصر من قاعدة بيانات بناءً على قائمة العناصر المحددة من النموذج. يحتوي كل عنصر على معرف مطابق، والذي عادةً ما يتم تخزينه في مصفوفة. سيبدو الاستعلام التقليدي "WHERE... IN" كما يلي:
$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)"; $st = $db->prepare($query); $st->execute(array(':idlist' => $idlist));
ومع ذلك، غالبًا ما يؤدي هذا الأسلوب إلى حذف المعرف الأول فقط. وذلك لأن شركة تنمية نفط عمان تفسر القائمة المفصولة بفواصل كقيمة واحدة، وبالتالي تتجاهل المعرفات اللاحقة.
للتحايل على هذه المشكلة، يجب على المرء الاستفادة من العناصر النائبة وربط المعلمات. يتضمن الأسلوب استبدال القائمة المفصولة بفواصل بأكملها بعناصر نائبة فردية (علامات الاستفهام) والتكرار عبر المصفوفة لربط كل معرف بعنصر نائب. إليك كيفية تحقيق ذلك:
$idlist = array('260','201','221','216','217','169','210','212','213'); $questionmarks = str_repeat("?,", count($idlist)-1) . "?"; $stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)"); foreach ($idlist as $id) { $stmt->bindParam(1, $id); }
يضمن هذا النهج المعدل معاملة كل معرف كمعلمة منفصلة، وبالتالي تمكين التنفيذ الدقيق للاستعلام.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3