Bạn không thể chuyển nhiều giá trị vào một trình giữ chỗ duy nhất. Bạn sẽ phải nhập một trình giữ chỗ khác cho mỗi giá trị được chuyển vào IN ()
. Vì bạn không biết sẽ có bao nhiêu cái, hãy sử dụng ?
thay vì các tham số được đặt tên.
$values = explode(',', $values) ;
$placeholders = rtrim(str_repeat('?, ', count($values)), ', ') ;
$query = "SELECT * FROM table WHERE id IN ($placeholders)";
$stm = $db->prepare($query) ;
$stm->execute($values) ;