2012-02-01 30 views
17

tôi đã hiển thị bảng có bản ghi và hình ảnh "Xóa". trên xóa hình ảnh nhấp vào i am xóa bản ghi bằng cách sử dụng ajax. giả sử có ba bản ghi với id 40,41,42 nếu tôi xóa bản ghi với ID = 40, trả về "1" và bản ghi bị xóa, lần sau nếu tôi lại nhấp vào xóa ảnh, nó sẽ trả về "1".codeigniter db-> delete() trả về true luôn không?

codeigniters db-> delete() luôn trả về "1"? tôi có cần phải kiểm tra thủ công nếu hồ sơ tồn tại và sau đó tiến hành xóa? dưới đây là mã của tôi iin ajax.php

$res = $this->db->delete(tbl_user_groups, array('owner_id' => $admin,'user_group_id'=>$gid)); 

if($res) echo json_encode (array("success"=>"true")); 
else  echo json_encode (array("success"=>"false")); 

Trả lời

41

Các db-> delete() lợi nhuận TRUE, nếu hoạt động xóa thành công. Nó sẽ chỉ trả lại FALSE nếu nó KHÔNG THỂ xóa hàng. Tôi nghĩ bạn nên kiểm tra một cái gì đó như:

$this->db->affected_rows(); 

trả về số và không phải là Boolean mà bạn có thể kiểm tra với điều kiện If của mình.

+0

ahaaa affected_rows() làm việc hoàn hảo cho tôi. Cảm ơn Sudhir. –

3

Note: This answer refers to an old version. In current version delete() returns a boolean.

Tại sao bạn nghĩ delete() trả về một boolean? Nó là một đối tượng!

var_dump() sẽ cho bạn biết điều này. Nó cũng sẽ cho bạn biết loại đối tượng đó là gì.

Xem Mã Nguồn: https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_active_rec.php#L1716

+0

tôi đã suy nghĩ trong mysql cách (nơi nó trả về true): P anyways thatnks cho liên kết, điều này sẽ giúp tôi trong tương lai. –

+0

Tôi đoán giá trị trả về là 'hỗn hợp', vì một phần từ cuối cùng trả về một đối tượng, nó cũng có thể trả về' FALSE' và bất kỳ '$ this-> query' nào trả về cũng là' hỗn hợp'. – vstm

+0

Nó được xác định là '@return object' nhưng hỗn hợp sẽ tốt hơn. Nó thậm chí có thể là một đối tượng, boolean hoặc thậm chí 'null'. – PiTheNumber

4

khi chúng ta xóa từ db trong CodeIgniter 2.2.0 sử dụng $this->db->delete() chúng ta có thể hoạt động với hai lá cờ: 1. $this->db->_error_message() và 2. $this->db->affected_rows()

Vì vậy, sau khi truy vấn db chúng tôi nhận được 1 và 2 như:

ĐÃ XÓA: '', 1

không bị xóa: '', 0 // chèo với id không tìm thấy, nhưng sql hoàn ok

SQL ERROR: string, -1

sự lựa chọn của tôi là kiểm tra sau:

$this->db->delete($this->table,array('id'=>$id)); 
if ($this->db->_error_message()) { 
    $result = 'Error! ['.$this->db->_error_message().']'; 
} else if (!$this->db->affected_rows()) { 
    $result = 'Error! ID ['.$id.'] not found'; 
} else { 
    $result = 'Success'; 
} 
+1

như của CI 3.0 kết quả đầu ra này: 'Gọi để undefined phương pháp CI_DB_mysqli_driver :: error_message()' - có vẻ như phương pháp tốt nhất là sử dụng affected_rows() – taber

Các vấn đề liên quan