Ошибка: неизвестный столбец «Массив» в предложении «where»

#php #arrays #codeigniter

#php #массивы #codeigniter

Вопрос:

Я хочу обновить несколько строк из таблицы базы foreach данных, но выдаю следующую ошибку:

Это мой php-код:

 $id_units       = $this->input->post('id_units');
$name_un       = $this->input->post('name_units');      
$price_un        = $this->input->post('price_units');
$description_un = $this->input->post('explanation_units');
$ex_un       = $this->input->post('addition_units');
$service_un        = $this->input->post('checkbox_units');
$data2 = array();
foreach ($name_un as $idx => $name) {
    $data2 = array(
        'relation' => $id_residence,
        'name_un' => $name_un[$idx],
        'price_un' => $price_un[$idx],
        'description_un' => $description_un[$idx],
        'ex_un' => $ex_un[$idx],
        'service_un' => json_encode($service_un[$idx]), // This Is Line Number: 212
    );
$this->db->update('hotel_units', $data2, array('id' => $id_units[$idx]));
};
  

Приведенный выше код содержит эту ошибку:

Произошла ошибка базы
данных Номер ошибки: 1054
Неизвестный столбец ‘Array’ в предложении ‘where’
UPDATE hotel_units SET 0 = Array WHERE id =
Имя файла массива:
D:xampphtdocssystemdatabaseDB_driver.php Номер строки: 330

Обновить:

У меня новая ошибка:

Обнаружена ошибка PHP
Серьезность:
Сообщение об уведомлении: Неопределенное смещение: 1
Имя файла:
residence.php Номер строки: 212

Обнаружена ошибка PHP
Серьезность:
Сообщение об уведомлении: Неопределенное смещение: 2
Имя файла:
residence.php Номер строки: 212

Обнаружена ошибка PHP
Серьезность: Уведомление
Сообщение: Неопределенное смещение: 3
Имя файла:
residence.php Номер строки: 212

'service_un' =>... являются флажком. Смотрите Номер строки: 212 в приведенном выше коде php

Ответ №1:

Похоже $id_units , это массив значений.

Вы могли бы попробовать с этим кодом, но он предполагает, что, как и остальные ваши поля ввода, id также является массивом и имеет тот же индекс, что и другие. Вы не предоставили свою HTML-форму, поэтому я просто предполагаю….В любом случае, последний параметр $this-> db-> where() должен быть единственным значением, даже если вы записываете его как массив (но из одного элемента).

 $id_units       = $this->input->post('id_units');
$name_un       = $this->input->post('name_units');      
$price_un        = $this->input->post('price_units');
$description_un = $this->input->post('explanation_units');
$ex_un       = $this->input->post('addition_units');
$service_un        = $this->input->post('checkbox_units');
$data2 = array();
foreach ($name_un as $idx => $name) {
    $data2 = array(
        'relation' => $id_residence,  // Or is it $id_residence[$idx] ?
        'name_un' => $name_un[$idx],
        'price_un' => $price_un[$idx],
        'description_un' => $description_un[$idx],
        'ex_un' => $ex_un[$idx],
        'service_un' => json_encode($service_un[$idx]),
    );
   $this->db->update('hotel_units', $data2, array('id' => $id_units[$idx]));
};
  

Комментарии:

1. Да, это массив, но теперь у меня есть эта ошибка: Unknown column '0' in 'field list', UPDATE 'hotel_units' SET '0' = Array WHERE 'id' = '32'

2. @Alicia Cibrian понял, я исправил свой ответ: должно быть $data2 , нет $data2[] , я раньше этого не видел

3. Не могли бы вы опубликовать свою HTML-форму? В противном случае это была бы просто игра в угадывание с моей стороны… Вы получите больше помощи даже от других людей, если сможете опубликовать структуру своей формы