2013-07-16 6 views
-1

Я создаю модуль для массовых заказов. Для этого мне нужно искать доступные комнаты и назначать комнаты для этой брони. Каждый номер будет добавлен в таблицу бронирования индивидуально через петлю. Однако вместо этого появилось сообщение об ошибке.Заполнение таблицы базы данных несколькими значениями/записями в CodeIgniter

A PHP Error was encountered 
Severity: Notice 
Message: Array to string conversion 
Filename: mysql/mysql_driver.php 
Line Number: 552 

Error Number: 1054 
Unknown column 'Array' in 'field list' 
INSERT INTO `reservations` (`guest_id`, `room_type`, `meal_type`, `extra_beds`, `purchases`, `guest_count`, `checkin`, `checkout`, `duration`, `total`, `room_number`, `guest_status`, `payment_status`, `travel_agent`) VALUES ('4', 'Single Room_10000', 'Breakfast_1000', '0_0', 0, '10', '2013-07-16', '2013-07-16', '1', '22250', Array, 'Arrived', 'Pending', '123456789V') 

Это контроллер:

function assign_available_rooms() {  
    $room_type = $this->input->post('room_type'); 
    $start_date = $this->input->post('start_date'); 
    $end_date = $this->input->post('end_date'); 
    $number_of_rooms = $this->input->post('number_of_rooms'); 
    $guest_nic_pp_dl = $this->input->post('guest_nic_pp_dl'); 
    $guest_id['guest_id'] = $this->group_reservations_model->retrieve_guest_id($guest_nic_pp_dl); 
    $tmp_rooms['room_number'] = $this->group_reservations_model->get_room_numbers($room_type, $start_date, $end_date, $number_of_rooms); 
    $newReservation = array (
     'guest_id' => $guest_id['guest_id'], 
     'room_type' => $this->input->post('room_type'), 
     'meal_type' => $this->input->post('meal_type'), 
     'extra_beds' => $this->input->post('ext_beds'), 
     'purchases' => 0, 
     'guest_count' => $this->input->post('number_of_guests'), 
     'checkin' => $this->input->post('start_date'), 
     'checkout' => $this->input->post('end_date'), 
     'duration' => $this->input->post('reservation_duration'), 
     'total' => $this->input->post('total'), 
     'room_number' => $tmp_rooms, 
     'guest_status' => $this->input->post('guest_status'), 
     'payment_status' => 'Pending', 
     'travel_agent' => $this->input->post('guest_nic_pp_dl') 
     ); 
    $this->group_reservations_model->assign_rooms($room_type, $start_date, $end_date, $number_of_rooms, $newReservation, $guest_id); 
    $this->load->view('success'); 

} 

Это моя модель:

function assign_rooms($room_type, $start_date, $end_date, $number_of_rooms, $newReservation, $guest_id, $tmpRoomNumber = array()) { 

    $query = $this->db->query(
     "SELECT a.room_number 
     FROM rooms a LEFT OUTER JOIN ( SELECT room_number 
             FROM reservations 
             WHERE checkin >= '$start_date' 
             OR checkout <= '$end_date' 
             ) b 
     ON a.room_number = b.room_number 
     WHERE b.room_number is NULL 
     AND a.room_type = SUBSTRING_INDEX('$room_type', '_', '1') 
     AND a.housekeeping_status = 'Clean' 
     ORDER BY a.room_number ASC 
     LIMIT $number_of_rooms "); 

    if($query->num_rows()>0) { 
     foreach($query->result_array() as $row) { 
      $this->db->trans_begin(); 
      $this->db->insert('reservations', $newReservation, $guest_id); 

      if ($this->db->trans_status() === FALSE) { 
       $this->db->trans_rollback(); 
       return false; 
      } 
      else { 
       $this->db->trans_commit(); 
      return true; 
      } 
     } 
    }  

} 
+0

Прежде чем задать этот вопрос здесь, вы дали ему шанс решить это самостоятельно? Ошибка довольно легко понять, у вас даже есть номера строк. –

+0

Я дам вам подсказку: «Неизвестный столбец« Массив »в« списке полей »« – jmadsen

ответ

1

ошибка, как это говорит, что происходит, потому что вы пытаетесь использовать массив как строка.

Изменить

'room_number' => $tmp_rooms 

в

'room_number' => $tmp_rooms['room_number'] 

Это хорошая идея, чтобы идти на отладку вещи, как это самостоятельно, потому что от его решений самого вы узнаете, как сделать это в следующий раз, когда вы сталкиваются с аналогичной ошибкой

+0

Спасибо. Это решило проблему. Но обновляется только одна запись. Должна быть проблема в «foreach» в Модели. – Ivy

+0

И этот комментарий выше моего - прекрасный пример того, что происходит, когда вы даете решение кому-то, кто использует 0% своей интеллектуальной способности для решения тривиальной проблемы. Что вы узнали = 0. Новая проблема? Нет проблем! SO существует, и есть люди, которые могут подумать обо мне, я даже не буду беспокоиться о Google. –