嗨,我正在尝试使用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的输入名称。 任何帮助将不胜感激
答案 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
方法中返回false
或update_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);
*/
}