Php 为另一个表中的数据编制索引并将其传递以匹配另一个查询时出错

Php 为另一个表中的数据编制索引并将其传递以匹配另一个查询时出错,php,codeigniter,Php,Codeigniter,我有这些表:问题中不需要的列被截断了 房间: 房间号|房间类型|房间号| 房间类型: 房间类型| id |房间类型|房间类型|默认|价格 保留: 预订_id房间|类型|入住|结帐 当用户通过输入所需的房间类型、到达日期、离开日期来搜索可用房间时,必须在下拉列表中填充可用房间类型。然而,有两个问题,一个是已知的,另一个是未知的。下面的代码只返回页面视图加载时的数组到字符串转换错误 已知的问题是,房间类型的下拉列表中也填充了房间类型表中的数据。对于JS/jQuery计算,我在填充时连接了room\u

我有这些表:问题中不需要的列被截断了

房间: 房间号|房间类型|房间号|

房间类型: 房间类型| id |房间类型|房间类型|默认|价格

保留: 预订_id房间|类型|入住|结帐

当用户通过输入所需的房间类型、到达日期、离开日期来搜索可用房间时,必须在下拉列表中填充可用房间类型。然而,有两个问题,一个是已知的,另一个是未知的。下面的代码只返回页面视图加载时的数组到字符串转换错误

已知的问题是,房间类型的下拉列表中也填充了房间类型表中的数据。对于JS/jQuery计算,我在填充时连接了room\u type列和room\u type\u default\u price列。因此,生成的HTML如下所示:

双人房

因此,用户输入的$room_类型是作为,例如Double room_20000,其中最初没有以这种方式存在的列数据。但在“房间类型”表中,“房间类型”列有双房间。如何分离这两个值并将room\u type\u id转换为$room\u type\u id

型号:

function searchRoomType($room_type) {
    $query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
    return $query->result();

    //return $room_type_id;

    //print_r ($room_type_id);
}

function searchRooms($room_type, $start_date, $end_date, $tmpRoomNumber = array()) {
    $room_type_id = $this->searchRoomType($room_type);

    $query = $this->db->query(
        "SELECT a.room_number
        FROM rooms a LEFT OUTER JOIN (  SELECT room_number
                                        FROM reservations
                                        WHERE checkin >= '$start_date'
                                        AND checkout <= '$end_date'
                                        ) b
        ON a.room_number = b.room_number
        WHERE a.room_type_id = '$room_type_id'
        AND a.housekeeping_status = 'Clean'
        AND b.room_number is NULL
        GROUP BY a.room_type_id
        ORDER BY a.room_number ASC");

    if($query->num_rows()>0) {
        foreach($query->result_array() as $row) {
            $tmpRoomNumber[$row['room_number']] = $row['room_number'];
        }
    }
    return $tmpRoomNumber;

}

我认为你应该像这样改变searchRoomType函数

function searchRoomType($room_type) {
    $query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
    foreach ($query->result() as $row)
    {
      $room_type_i=$row->room_type_id;
    }
  return $room_type_id;
}

错误指向哪一行?searchRooms返回一个数组,因此输出该函数返回的位置是错误的来源-请确保函数searchRoomType可以返回$room_type_id,我不检查,但返回的值似乎是查询结果对象,而不是id。-在函数searchRooms中,没有必要将$tmpRoomNumber作为参数包含在内。