मैं कुछ समाधानों के बारे में सोच सकता हूं।
एक समाधान अस्थायी तालिका बनाना हो सकता है। प्रत्येक पैरामीटर के लिए तालिका में एक इन्सर्ट करें जो आपके पास क्लॉज में होगा। फिर अपनी अस्थायी तालिका के विरुद्ध एक साधारण जुड़ाव करें।
ऐसा कुछ करने का एक और तरीका हो सकता है।
$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$parmcount=count($parms); // = 4
$inclause=implode(',',array_fill(0,$parmcount,'?')); // = ?,?,?,?
$sql='SELECT age, name FROM people WHERE id IN (%s)';
$preparesql=sprintf($sql,$inclause); // = example statement used in the question
$st=$dbh->prepare($preparesql);
$st->execute($parms);
मुझे संदेह है, लेकिन मेरे पास कोई सबूत नहीं है कि पहला समाधान बड़ी सूचियों के लिए बेहतर हो सकता है, और बाद में छोटी सूचियों के लिए काम करेगा।
@orrd को खुश करने के लिए यहां एक संक्षिप्त संस्करण है।
$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$st=$dbh->prepare(sprintf('SELECT age, name FROM people WHERE id IN (%s)',
implode(',',array_fill(0,count($parms),'?'))));
$st->execute($parms);