如何在单个查询中获取与提供的ID相对应的所有“名称”列?
假设我有一个像这个$ids = [ '1', '3', '7', '24', ... ];
这样的php数组,那么是否可以在下表中获取该表中的'name',在单个查询中的所有$ids[i]='id'
,或者我是需要使用for
循环?
CREATE TABLE `services` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT '',
`description` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`) USING BTREE
)
我正在使用CodeIgniter。
答案 0 :(得分:2)
您可以将where_in
用于此
$ids = [ '1', '3', '7', '24', ... ];
$this->db->select('name');
$this->db->from('services');
$this->db->where_in('id', $ids);
答案 1 :(得分:1)
您可以使用IN clause
SELECT * FROM `services` WHERE ID IN (".implode(',' , $ids).");
如果dataType是varchar,请务必相应地添加'
SELECT * FROM `services` WHERE ID IN ('".implode('','' , $ids)."');
答案 2 :(得分:0)
如果数据数组重复,您也可以使用查询绑定:
<?php
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
?>