2017-03-09 42 views
1

我發現東西笨令人不安笨update_batch返回false,爲什麼當我使用update_batch和要更新的數據是完全相同的在數據庫中的數據,它總是返回false。如果沒有數據被更改

我似乎無法找到CI文檔中的任何邏輯和良好的解釋和說明。我需要它,即使沒有數據變回真實的,因爲它會影響我的代碼有很大塊,且僅當無法更新數據庫返回false(即插入已經存在成一個獨特的列中的數據),那麼它應該返回false。

還有一件事,我怎麼顯示CI數據庫查詢錯誤信息?已經讀過它應該是$this->db->_error_message(),但它一直返回Call to undefined method。我在這裏錯過了什麼?

回答

1

您的問題包含相互矛盾的信息:

  • update_batch()有它是否已成功執行了至少一個UPDATE查詢時,不論任何記錄是否更新或不從未返回布爾false
    • 在CI2中,在這種情況下它的返回值爲void(如果要使用它,則隱式轉換爲null)。
    • 在CI3,它返回一個包含受影響的行數的整數(int(0)是不一樣的東西bool(false)
    • 在這兩個版本的樹木,布爾false當您傳遞不正確的參數只能返回。
  • _error_message()用於在CI2上存在,但其下劃線前綴表示它是一種內部方法,您不應該使用它。 CI3有一個替換它的error()方法,如果首先出現錯誤,它將返回數組中的代碼和消息。
+0

太謝謝你了。這是一個非常簡潔的解釋。爲什麼CI不在文檔中包含此信息。那麼我所做的就是if(update_batch()){return true} else {return false},並認爲它在沒有影響時返回false。現在更清晰了,我可以在我的代碼中使用受影響的行。謝啦。 – Charas

+0

它確實......我不知道你在看什麼類型的文檔。這是官方的一個:https://codeigniter.com/userguide3/database/query_builder.html#CI_DB_query_builder::update_batch – Narf

相關問題