2011-12-12 82 views
0

我已經瀏覽了許多關於SO的帖子,並且使用Google搜索了這個,但是我沒有發現任何我已經提到過的具體問題。所以,請原諒這個問題看起來多餘的性質。CodeIgniter數據庫錯誤覆蓋

我有一個模型,當它試圖插入一個記錄到表中,並且該插入違反了我在特定字段上的唯一值索引時,CI會拋出它自己有關該錯誤的錯誤消息。

我想知道是否有一種方法可以重寫CodeIgniter顯示的錯誤,它顯示數據庫錯誤時使用我自己的處理程序,以便用戶的體驗不會完全被錯誤破壞,我可以簡單地向用戶指出它們是什麼提交的內容是數據庫中已有內容的副本。

現在,我知道我可以通過對數據庫運行select並按照這種方式處理它,但這似乎完全違反數據庫自身能夠使用唯一索引處理此類事情的能力。

那麼,有沒有人找到一種方法來鉤入CI中的數據庫錯誤處理,並用它們自己的實現覆蓋它?

回答

1

在提交查詢之前檢查現有值,它不直觀。你應該從來沒有依靠數據庫來驗證用戶/你的輸入..使用PHP。

+0

我想如果這是我唯一的選擇,那就這樣吧。謝謝,邁克。 – Skittles

+0

那麼你問的是可能的,但這將是一個非常糟糕的做法。只要確保你有適當的表格和索引優化 - 你不應該注意到任何明顯的性能下降。 – Mike

-1

我不確定CI錯誤處理的工作方式,但嘗試覆蓋顯示錯誤的方法。我很確定它位於system/core/exceptions.php

+0

嗨JanL&謝謝您的回覆。我會看看。目前,我正在查看系統/數據庫/ DB_driver.php文件的源代碼,該文件似乎是查詢功能的起源。我希望看到它是如何攔截錯誤的。也許我可以寫一個幫手,然後可以取代核心處理。我不能讓用戶放棄錯誤消息而不是更直觀的處理方法。 – Skittles

0

有/application/errors/error_db.php

該文件顯示錯誤消息的文件。你可能想在這裏做點什麼。

+0

我也來看看。謝謝。 – Skittles