شرح صفوف ومحتوى الفقرة
عند إدراج عدة سجلات داخل حلقة تكرار، استدعِ $pdo->prepare() مرة واحدة فقط خارج الحلقة، ونفذ $stmt->execute($row) داخل الحلقة.
- تحضير جملة SQL مرة واحدة يتيح لمحرك قاعدة البيانات تحليل الاستعلام وبناء خطة التنفيذ مرة واحدة فقط.
- في كل دورة داخل حلقة
foreachيتم إرسال القيم الجديدة فقط دون إعادة تحليل نص الاستعلام. - تجنب استدعاء
$pdo->prepare()داخل الحلقة لأن ذلك يكرر عبء التحليل مع كل سجل.
استدعاء prepare() مرة واحدة قبل حلقة foreach يدرج الوسوم الثلاثة بكفاءة عالية.
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE tags (id INTEGER PRIMARY KEY, slug TEXT)');
$stmt = $pdo->prepare('INSERT INTO tags (slug) VALUES (:slug)');
foreach (['php-84', 'pdo-sql', 'security'] as $slug) {
$stmt->execute(['slug' => $slug]);
}
$total = $pdo->query('SELECT COUNT(*) FROM tags')->fetchColumn();
echo "Total inserted tags: $total\n";