"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تنفيذ استعلامات PDO باستخدام \"WHERE... IN\" باستخدام العناصر النائبة والمعلمات؟

كيفية تنفيذ استعلامات PDO باستخدام \"WHERE... IN\" باستخدام العناصر النائبة والمعلمات؟

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

How to Execute PDO Queries with \

استعلامات شركة تنمية نفط عمان مع "أين... في"

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

معضلة "أين..."

فكر في السيناريو الذي تحتاج فيه إلى حذف عناصر من قاعدة بيانات بناءً على قائمة العناصر المحددة من النموذج. يحتوي كل عنصر على معرف مطابق، والذي عادةً ما يتم تخزينه في مصفوفة. سيبدو الاستعلام التقليدي "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