【问题标题】:Update table column using codeigniter使用 codeigniter 更新表列
【发布时间】:2018-06-25 21:26:49
【问题描述】:

大家好,我正在尝试使用 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 的输入名称。 任何帮助将不胜感激

【问题讨论】:

  • 你有什么错误吗?
  • 你的表更新了吗?
  • 不,它没有,它将我发送到 else 条件,“更新不成功...”,我检查了 mysql,并且字段没有被更新
  • 使用控制器中的print_r($data); 和$Interno 确保$data 不为空
  • 是的,两个都是空的

标签: php mysql codeigniter codeigniter-3


【解决方案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 ...";
    }    
}

此外,您应该从update_Status 方法返回true 或false,这取决于您的表是否有任何更改

注意:$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);
   */
}

【讨论】:

  • 现在它显示错误解析错误:语法错误,意外'$data'(T_VARIABLE),它说在控制器的这一行,$data = array('Status' => $Status );
  • 那里缺少;,更新了我的答案,像这样看那里
  • 是的,我发现了“;”我尝试了之前的代码和您后来编辑的代码,现在它只显示一个空白页面,它没有显示任何错误消息或任何东西,我检查了 mysql 并且列没有更新。
  • 这是因为 $Interno 是空的,要检查它在控制器中添加 else 部分,请参阅更新后的答案
  • 你认为这与我使用左连接显示来自两个不同表的数据有什么关系吗,但无论如何,“Interno”,即 ID 都在两个表上。
猜你喜欢
  • 2015-09-29
  • 2011-12-30
  • 1970-01-01
  • 2015-11-05
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多