Shoryukane
Shoryukane

Reputation: 3

Codeigniter 3 Transaction

In my code the transaction is not rolling even when i have database error.... here is the code...

Even when insert in trial or register fails the login user inserts the data...

$this->db->trans_start();
            $logindata = $this->_get_login_data();
            $logindata['is_deleted'] = 0;
            $this->db->insert('user_login',$logindata); 
            //insert login data end


            //insert register data begin
            $registerdata = $this->_get_register_data();
            $registerdata['is_active'] = 1;
            $registerdata['user_login_id'] = $this->db->insert_id();
            $registerdata['subscription_id'] = null;
            $registerdata['login_other_accounts_id'] = null;
            $registerdata['is_first_time_login'] = 1;
            $registerdata['default_language_id'] = 1;
            $registerdata['created_on'] = date('Y-m-d H:i:s');
            $registerdata['is_deleted'] = 0;

            //insert trial period begin
            $trialdata['trial_period_day'] = 10;
            $trialdata['is_publish'] = 0;
            $trialdata['is_deleted'] = null;
            $this->trial_period_model->insert('trial_period',$trialdata);
            //insert trial period end

            if($registerdata['is_company']==null)
                $registerdata['is_company'] = 0;
            $registerdata['trial_period_id'] = $this->user_model->get_last_inserted_id();
            $this->upload_image();
            $imagename = $this->upload->data();
            $registerdata['photo_logo'] = $imagename['file_name'];
            $this->user_model->insert('general_reg_info',$registerdata);
            if ($this->db->trans_status() === FALSE)
            {
                    $this->db->trans_rollback();
                    echo "failed";
            }
            else
            {
                    $this->db->trans_commit();
                    echo "success";
            }
            //insert register data end

Upvotes: 0

Views: 127

Answers (1)

ujjwal singh
ujjwal singh

Reputation: 90

Your database type might be 'MyISAM' change the database type to 'InnoDB'

Upvotes: 1

Related Questions