Я использую «CodeIgniter-3.1.3». Когда я обновляю свои данные, выдает ошибку следующим образом. Но мои данные сохраняются в базе данных. Я не могу найти в чем проблема. Есть ли какие-либо проблемы с моей функцией модели, связанные с версией ..?

Error : Fatal error: Call to undefined method CI_DB_mysqli_driver::_error_number()

В контроллере

public function saveUpdateData(){
    $updateDataArray = array(
        "fname" => $_POST['fname'],
        "lname" => $_POST['lname'],
        "username" => $_POST['user'],
        "userlevel" => $_POST['userlevel'],
        "contact" => $_POST['contact_no']
    );
    $whereArr=array("user_id"=>$this->input->post("user_id"));
    $rst = $this->MyModel->updateData("admin", $updateDataArray, $whereArr);

    if ($rst) {
      echo "updated";
    }    
    else{
      echo "error";
    }
}

В модели

function updateData($tablename, $data_arr, $where_arr) {
    try {
        $this->db->update($tablename, $data_arr, $where_arr);
        $report = array();
        $report['error'] = $this->db->_error_number();
        $report['message'] = $this->db->_error_message();
        return $report;
    } catch (Exception $err) {
        return $err->getMessage();
    }
}

введите описание изображения здесь

1
Lahiru Madushan 8 Сен 2017 в 20:55

3 ответа

Лучший ответ

Делай так

В модели

function updateData($tablename, $data_arr, $where_arr) 
{
    if (!$this->db->update($tablename, $data_arr, $where_arr)) {
        $result = $this->db->error(); 
    } 
    else {
        return TRUE;
    }
}

В контроллере

$rst = $this->MyModel->updateData("admin", $updateDataArray, $whereArr);

if ($rst == TRUE) {
  echo "updated";
}    
else{
  print_r($rst);
}

Прочитайте Обработка ошибок Codeigniter.

2
Abdulla Nilam 8 Сен 2017 в 18:02

В CodeIgniter 3+ вы можете получать сообщения об ошибках с ошибками и сообщениями, используя следующие: $error = $this->db->error();

Ссылка: Обработка ошибок запросов в CodeIgniter

1
akbansa 8 Сен 2017 в 18:04

Функции, к которым вы пытаетесь получить доступ, устарели.

Заменить:

  • $this->db->_error_number()
  • $this->db->_error_message()

С участием:

  • $this->db->error()

Новая функция вернет массив с номером ошибки и сообщением.

Обратитесь к этой странице CodeIgniter: https://www.codeigniter.com/userguide3/changelog.html?highlight= _error_number

0
neuromatter 8 Сен 2017 в 18:00