Codeigniter错误-'PRIMARY `键UPDATE票证' SET 'id'= '2','status'= 1`项'2'重复

zkure5ic  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(70)

我正在用Codeigniter 3构建一个支持系统。当ticket状态为0时,没有问题,但当我想将当前状态设置为1时,我得到一个错误。我的数据库“TNYINT”长度1默认值0
如果我把它作为0发送,这是可以的,但当管理员张贴这一点,我必须使它1。

/*** Reply Ticket Post */
    public function admin_reply_ticket_post()
    {

        /// Admin Authority Checkup Getting Started
        adminCheck();
        // Admin Authority Check End
        
        $data = array(
            'ticket_id' => $this->input->post('ticket_id'),
            'admin_id' => $this->session->userdata('adminid'),
            'first_name' => $this->session->userdata('first_name'),
            'last_name' => $this->session->userdata('last_name'),
            'message' => $this->input->post('message')
        );

        $this->db->insert('tickets_sub', $data);

        // Make Ticket Status "in the transaction"
        $data = array(
            'id' => $this->input->post('ticket_id'),
            'status' => 1 ,
        );
        $this->db->update('tickets', $data);
v8wbuo2f

v8wbuo2f1#

现在,您正在给tickets表中的all记录一个新的idstatus,这就是为什么您会得到“Duplicate”错误。您需要添加一个WHERE子句来指定要更新的记录:

// Make Ticket Status "in the transaction"
    $data = array(
        'status' => 1 ,
    );
    $this->db->where('id' => $this->input->post('ticket_id'));
    $this->db->update('tickets', $data);

或者更短:

// Make Ticket Status "in the transaction"
    $data = array(
        'status' => 1 ,
    );
    $this->db->update('tickets', $data, array('id' => $this->input->post('ticket_id')));

请访问:https://www.codeigniter.com/userguide3/database/query_builder.html#updating-data

相关问题