drt5813 2018-10-29 16:39
浏览 209
已采纳

为什么$ this-> db-> affected_rows()返回0?

Following function is written in codeigniter 3 for deleting user:

    public function deleteUser($id) {

        $this->db->trans_start();

        $this->db->where('usma_user_id', $id);
        $this->db->delete('ec_usma_usermain');          

        $this->db->trans_complete();            

        if ($this->db->trans_status() === FALSE) {

            $transResult = array(
                            'response' => 'Operation failed!',
                            'status' => TRUE
                            );

        } else if ($this->db->trans_status() === TRUE) {

            if($this->db->affected_rows() > 0 ) {

                $transResult = array(
                                'response' => 'Operation executed successfully!',
                                'status' => TRUE
                                );

            } else {

                $transResult = array(
                                'response' => 'Unexpected error! Contact admin.',
                                'status' => FALSE
                            );

            }
        }

        return $transResult;

    }

In above function even when there is a row and it is deleted response returned is

Unexpected error! Contact admin

Which means value returned by

    echo $this->db->affected_rows();

is 0 (zero). So I checked (echoed) the output of

    echo $this->db->affected_rows(); 

before

    echo $this->db->trans_complete();

is executed, it returned no. of deleted rows (in my case 1 row) and if same line of code is written after

    echo $this->db->trans_complete();

it returns 0. Why is it so?

  • 写回答

2条回答 默认 最新

  • dqhdpppm02183 2018-10-29 16:48
    关注

    Actually, $this->db->affected_rows() returns the number of rows affected by last statement. Here last statement is $this->db->trans_complete() by which number of affected row is 0.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?