Tất cả bây giờ và sau đó, tôi nhận được vào một tình huống khi tôi có một truy vấn tương tự bằng hiện vật để:nhóm PDO fetchAll cặp khóa-giá trị vào mảng assoc
SELECT `key`, `value` FROM `settings`;
Trong trường hợp này, tôi muốn để có được một kết mảng, sử dụng các giá trị của key
& value
làm các mục tương ứng của mảng đó, ví dụ: nếu cơ sở dữ liệu chứa: ('first_name', 'Tom'), ('last_name', 'Jeferson')
, mảng phải là array('first_name' => 'Tom', 'last_name' => 'Jeferson');
.
Cách phổ biến nhất để làm điều này là:
$settings_flat = $db
->query("SELECT `name`, `value` FROM `settings`;")
->fetchAll(PDO::FETCH_ASSOC);
$settings = array();
foreach ($settings_flat as $setting) {
$settings[$setting['name']] = $setting['value'];
}
* Một cách khác để làm điều này là bằng cách gọi fetchAll(PDO::FETCH_COLUMN)
hai lần & sau đó sử dụng array_combine
để tạo mảng. Tuy nhiên, vì nó liên quan đến hai cuộc gọi hai cơ sở dữ liệu, tôi bỏ qua điều này như là một tùy chọn.
Có cách nào khác để thực hiện việc này không?
Tuyệt vời! Không biết về hằng số này. Rõ ràng PDO tìm nạp trang tài liệu không liệt kê tất cả. Mặc dù, 'AS name, AS value' bit là thừa. – Gajus
Ngoài ra, không biết, IDE của tôi đã đánh dấu nó cho tôi ...) – devdRew
Có cách nào để sử dụng 'PDO :: FETCH_KEY_PAIR' và có đầu ra là một' đối tượng' cùng một lúc không? – adamj