2013-07-29 13 views
6

Tôi mới sử dụng CodeIgniter, PHP và MySQL. Tôi muốn xử lý các lỗi DB tạo ra. Từ một trong những bài viết trong Stackoverflow, tôi biết rằng bằng cách làm theo tuyên bố một có thể bắt lỗi.Cách bắt lỗi DB trong CodeIgniter PHP

$this->db->_error_message(); 

Nhưng tôi không thể tìm ra cú pháp chính xác khi sử dụng điều đó. Giả sử tôi muốn cập nhật bản ghi của bảng có tên là "tên_bảng" bởi tuyên bố sau:

$array['rank']="8"; 
$array['class']="XII"; 
$this->db->where('roll_no',$roll_no); 
$this->db->update("table_name", $array); 

đây trong đoạn mã trên tôi muốn bắt lỗi DB bất cứ khi nào vi phạm mức độ DB xảy ra tức là một trong hai tên trường là không hợp lệ hoặc một số vi phạm ràng buộc duy nhất xảy ra. Nếu có ai giúp tôi sửa chữa thì tôi sẽ rất biết ơn. Cảm ơn bạn.

+0

Các bạn đã cố gắng thử. .catch block? Catch (Ngoại lệ $ e) {echo $ e-> getMessage(); } –

Trả lời

6

CodeIgniter có chức năng cho nó

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


if(!$this->db->update("table_name", $array)) 
{ 
    $this->db->_error_message(); 
    $this->db->_error_number(); 
} 
+0

Tôi biết hai chức năng này. Bạn có thể vui lòng cho tôi biết nơi tôi nên đặt nó trong mã trên và làm thế nào? – Joy

+0

@joy kiểm tra chỉnh sửa của tôi. –

+0

tôi không hiểu cách áp dụng hoặc sử dụng "$ this-> db -> _ error_message();" vì vậy bạn có thể giúp tôi về điều này? @RajeevRanjan –

5

Bạn có thể gỡ lỗi các lỗi cơ sở dữ liệu về cấu hình cơ sở dữ liệu (config/database.php) như thế này:

$db['default']['db_debug'] = TRUE; 

Thông tin thêm đọc here

Ngoài ra bạn có thể sử dụng Profiler để xem tất cả các truy vấn và tốc độ của chúng. Trong điều khiển bạn có thể đặt này:

$this->output->enable_profiler(TRUE); 

biết thêm thông tin đọc here

1

On CodeIgniter phiên bản 2,

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

On CodeIgniter phiên bản 3,

$db_error = $this->db->error(); 
echo '<pre>';print_r($db_error);echo '</pre>';