【问题标题】:Error while indexing data in another table and passing it to match another query在另一个表中索引数据并将其传递以匹配另一个查询时出错
【发布时间】:2013-07-14 01:49:47
【问题描述】:

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

房间: room_id | room_type_id |房间号

房间类型: room_type_id |房间类型 | room_type_default_price

预订: reservation_id 房间类型 |签到 |结帐

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

  2. 已知的问题是,房间类型的下拉列表也填充了 room_types 表中的数据。对于 JS/jQuery 计算,我在填充时连接了 room_type 列和 room_type_default_price 列。所以生成的HTML是这样的:

双人间

因此,用户输入 $room_type 以例如“Double Room_20000”的形式出现,其中原本不存在列数据。在房间类型表中,room_type 列有“双人房”。如何将这两个值分开并将 room_type_id 设置为 $room_type_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;

}

【问题讨论】:

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

标签: php codeigniter


【解决方案1】:

我认为您应该像这样更改函数 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多