我可以想到几个解决方案。
一种解决方案可能是创建一个临时表。在表中插入in子句中的每个参数。然后对您的临时表进行简单的联接。
另一种方法可能是做这样的事情。
$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);


