使用codeigniter更新表列

时间:2018-06-25 21:26:50

标签: php mysql codeigniter codeigniter-3

嗨,我正在尝试使用codeigniter更新表列,这是我的以下代码。

控制器:

function search2()
{
  if ($_POST) {
      $Interno=$_POST['Interno'];
  }else{
    $Interno = '';
  }
  $this->db->select('empleados.Interno, empleados.Curp, empleados.Nombre, empleados.A_Paterno, empleados.A_Materno, cuentas.Clabe, cuentas.Banco, cuentas.Observaciones, cuentas.Status');
$this->db->from('empleados');
$this->db->join('cuentas',"cuentas.Interno = empleados.Interno AND cuentas.Status !='I'", 'Left');
$this->db->where('empleados.Interno', $Interno);
$q = $this->db->get();
$data = array();
$data['records'] = $q->result_array();
$this ->load -> view('main/indice', $data);  
}

function update_Status() 
        {
    $Interno= $this->input->post('Interno');
    $data = array(
    'Status' => $this->input->post('Inactivo')
       );
      if($this->consultas_M->update_Status($Interno, $data))
     {
       echo " update successful...";
       }
    else
      {
  echo "update not successful...";
     }  
   }

使用search2函数,我显示来自两个表的结果(可能是问题所在),然后我想将表cuentas的状态更改为“ I”(默认为非活动状态,即“ A”处于活动状态)。所以我只想更新“状态”列。但是它什么也没做。 这是我的模特

function update_Status($Interno,$data)
    {
   $this->db->where('Interno', $Interno);
   $this->db->update('cuentas', $data);
    }

“ Interno”是表中的ID,也是显示该ID的输入名称。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

希望这对您有帮助:

您的控制器方法update_Status应该是这样的:

function update_Status() 
{
    $Interno = $this->input->post('Interno');
    $Status = $this->input->post('Inactivo');

    $data['status'] = ! empty($Status) ? $Status : 'I';
    if ( ! empty($Interno))
    {
        $updated = $this->consultas_M->update_Status($Interno, $data);
        if($updated)
        {
           echo " update successful...";
        }
        else
        {
            echo "update not successful...";
        }  
    }
    else
    {
        echo "Interno  not found ...";
    }    
}

此外,基于表中是否有任何更改,您应该从true方法中返回falseupdate_Status

注意$this->db->affected_rows():在执行“写入”类型查询(插入,更新等)时显示受影响的行数。

您的模型方法update_Status应该是这样的:

function update_Status($Interno,$data)
{
   $this->db->where('Interno', $Interno);
   $this->db->update('cuentas', $data);
   if ( $this->db->affected_rows() > 0 )
   {
      return TRUE;
   }
   else 
   {
     return FALSE;
   }
   /* OR you can simply return like this 
     return $this->db->update('cuentas', $data);
   */
}