यह संभव नहीं है जिस तरह से आप इसे आजमाते हैं। आपके पास हर उस पैरामीटर के लिए एक अलग प्लेसहोल्डर होना चाहिए जिसमें आप पास करना चाहते हैं, बाकी सब कुछ पैरामीटर के उद्देश्य को धता बता देगा (जो डेटा से कोड को अलग कर रहा है)।
$ids = array(2, 4, 6, 8);
// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt = $PDO->prepare($sql);
$rows = $stmt->execute($parms);
यदि आपको बाइंड के दौरान मानों की एक सरणी में एक पैरामीटर में पास करने की अनुमति दी गई थी, तो आपको प्रभावी रूप से SQL कथन को बदलने की अनुमति होगी। यह SQL इंजेक्शन के लिए एक बचाव का रास्ता होगा - कुछ भी गारंटी नहीं दे सकता है कि सभी सरणी मान निर्दोष पूर्णांक होंगे।