सिद्धांत रूप में, ऐसा लग सकता है कि एक एकल कथन अधिक कुशल है क्योंकि आप MySQL सर्वर पर कई कॉल करने से बचते हैं, लेकिन वास्तविकता यह है कि यह एक माइक्रो-ऑप्टिमाइज़ेशन है और आप मुश्किल से किसी लाभ के लिए अपने कोड को अधिक जटिल बना रहे हैं।
तैयार बयानों के बारे में अच्छी बात यह है कि इसे एक बार तैयार किया जाता है और इसे कई बार निष्पादित किया जा सकता है। यह आपको पहले से ही SQL कथन को कई बार पार्स करने से बचाता है। बस एक लूप के बाहर एक स्टेटमेंट तैयार करें और फिर इसे लूप के अंदर निष्पादित करें।
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
यदि आप लेन-देन में पूरी बात लपेटते हैं जैसा कि टिप्पणियों में आपके सामान्य ज्ञान ने सुझाव दिया है तो एक बड़े बयान की तुलना में प्रदर्शन में कोई उल्लेखनीय अंतर नहीं है।
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO people (firstName, lastName) VALUES(?,?)');
$pdo->beginTransaction();
foreach ($names as $name) {
$stmt->execute($name);
}
$pdo->commit();