MySql为单个查询中的所有提供的X选择field_1,其中X = field_2

时间:2015-09-08 05:01:56

标签: php mysql codeigniter

如何在单个查询中获取与提供的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。

3 个答案:

答案 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'));   
?>