في سيناريوهات مثل التسجيل عبر الإنترنت، غالبًا ما يحدد المستخدمون عناصر متعددة يرغبون في شرائها أو التسجيل فيها أو ينضم. عادةً ما يتم تخزين هذه العناصر في صفائف لتسهيل معالجتها. ومع ذلك، فإن إدراج البيانات من المصفوفات في قواعد بيانات MySQL باستخدام البيانات المعدة في PHP وPDO قد يكون أمرًا صعبًا. تستكشف هذه المقالة طرقًا للتغلب على هذا التحدي.
أحد الأساليب هو استخدام حلقة for وتنفيذ مثيلات متعددة لعبارة SQL، كما هو موضح أدناه:
for($j = 0; $j < (count($data)-1); $j ) {
$stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
$stmt->execute(array($memberid, $data[$j]));
}
على الرغم من أن هذه الطريقة بسيطة نسبيًا، إلا أنها تعرض مشكلات في الأداء عند التعامل مع مجموعات البيانات الكبيرة.
الأسلوب الأكثر كفاءة هو إنشاء عبارة SQL واحدة ديناميكيًا. يمكن للمرء تحقيق ذلك عن طريق التكرار على المصفوفة وإنشاء قائمة مفصولة بفواصل من العناصر النائبة والقيم بين قوسين:
$sql = 'INSERT INTO table (memberID, programID) VALUES ';
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $memberid;
$insertData[] = $row;
}
if (!empty($insertQuery)) {
$sql .= implode(', ', $insertQuery);
$stmt = $db->prepare($sql);
$stmt->execute($insertData);
}
تجمع هذه الطريقة بشكل فعال البيانات الفردية في استعلام واحد لإدراجها في قاعدة البيانات. فهو يضمن معالجة فعالة وتقليل النفقات العامة، مما يجعله مناسبًا للسيناريوهات التي تحتوي على مجموعات بيانات كبيرة أو عندما يكون تحسين الأداء أمرًا بالغ الأهمية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3