错误:'where子句'中的未知列'Array'

时间:2011-10-11 12:08:27

标签: php arrays 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
未知列   'where子句'中的'Array'更新hotel_units SET 0 =数组   WHERE id =数组
文件名:   D:\ xampp \ htdocs \ system \ database \ DB_driver.php
行号:330

更新

我有新的错误:

  

遇到PHP错误
严重性:通知
消息:   未定义的偏移量:1
文件名:residence.php
行号:   212

遇到PHP错误
严重性:通知
  消息:未定义的偏移量:2
文件名:residence.php
行   编号:212

遇到PHP错误
严重性:   注意
消息:未定义的偏移量:3
文件名:   residence.php
行号:212

'service_un' =>...是复选框。请参阅以上php代码中的行号:212

1 个答案:

答案 0 :(得分: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]));
};