Tôi có thể nghĩ ra một vài giải pháp.
Một giải pháp có thể là tạo một bảng tạm thời. Thực hiện chèn vào bảng cho mỗi tham số mà bạn sẽ có trong mệnh đề trong. Sau đó, thực hiện một phép nối đơn giản với bảng tạm thời của bạn.
Một phương pháp khác có thể là làm điều gì đó như thế này.
$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);
Tôi nghi ngờ, nhưng không có bằng chứng nào, rằng giải pháp đầu tiên có thể tốt hơn cho các danh sách lớn hơn và giải pháp sau sẽ hiệu quả với các danh sách nhỏ hơn.
Để làm cho @orrd hài lòng, đây là một phiên bản ngắn hạn.
$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);