Những gì lừa dối đã nói trong các bình luận là chính xác. Đây là một cách mà tôi đã làm trước đây.
Về cơ bản, bạn tạo IN
một phần của chuỗi sql bằng cách lặp lại các giá trị mảng và thêm tên được liên kết vào.
$allow = array( 'red', 'blue' );
$sql = sprintf(
"Select * from colors where type in ( %s )",
implode(
',',
array_map(
function($v) {
static $x=0;
return ':allow_'.$x++;
},
$allow
)
)
);
Điều này dẫn đến Select * from colors where type in ( :allow_0,:allow_1 )
Sau đó, chỉ cần lặp lại $allow
mảng và sử dụng bindValue để liên kết từng biến.
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
Tôi đã thêm điều này trước khi nhận ra sự lừa dối được liên kết với một câu hỏi đưa ra một ví dụ tương tự. Tôi để điều này ở đây vì nó chỉ ra cách thực hiện với các biến liên kết được đặt tên chứ không phải? S