Tôi tò mò muốn biết liệu có thể liên kết một mảng các giá trị với một trình giữ chỗ bằng PDO hay không. Trường hợp sử dụng ở đây đang cố gắng truyền một mảng các giá trị để sử dụng với một IN()
điều kiện.
Tôi muốn có thể làm một cái gì đó như thế này:
<?php
$ids=array(1,2,3,7,8,9);
$db = new PDO(...);
$stmt = $db->prepare(
'SELECT *
FROM table
WHERE id IN(:an_array)'
);
$stmt->bindParam('an_array',$ids);
$stmt->execute();
?>
Và có PDO liên kết và trích dẫn tất cả các giá trị trong mảng.
Hiện tại tôi đang làm:
<?php
$ids = array(1,2,3,7,8,9);
$db = new PDO(...);
foreach($ids as &$val)
$val=$db->quote($val); //iterate through array and quote
$in = implode(',',$ids); //create comma separated list
$stmt = $db->prepare(
'SELECT *
FROM table
WHERE id IN('.$in.')'
);
$stmt->execute();
?>
Đó chắc chắn là công việc, nhưng chỉ tự hỏi nếu tôi có một giải pháp tích hợp sẵn?