Php 当codeigniter中发生数据库错误时,如何在没有错误页面的情况下显示错误消息
我有两张桌子,分别是产品和采购。 我使用Php 当codeigniter中发生数据库错误时,如何在没有错误页面的情况下显示错误消息,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有两张桌子,分别是产品和采购。 我使用purchase.purchase\u id列在product.purchase\u id列中的delete restrictFK上设置了。然后,如果我尝试用FK删除product.product_id,它会显示错误,如下所示 A Database Error Occurred Error Number: 1451 Cannot delete or update a parent row: a foreign key constraint fails
purchase.purchase\u id
列在product.purchase\u id
列中的delete restrictFK上设置了。然后,如果我尝试用FK删除product.product_id,它会显示错误,如下所示
A Database Error Occurred
Error Number: 1451
Cannot delete or update a parent row: a foreign key constraint fails (`another_bata`.`product_purchase_item`, CONSTRAINT `FK_product_purchase_item_1` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON UPDATE CASCADE)
delete from product where product_id='158'
Filename: C:\xampp\htdocs\rima_shoe\system\database\DB_driver.php
Line Number: 330
但是这个代码不起作用。它还会在白色页面中显示上述错误 codeigniter查询不会引发异常。相反,使用此选项可以确定是否发生了错误
if ($this->db->_error_message()){
$msg = $this->db->_error_message();
echo $msg;
}
就这么简单参考
在database.php文件中找到该行
$db['default']['db_debug']
并将其设置为FALSE。这将防止Codeigniter在屏幕上打印错误
在删除功能中,您还可以检查:
if ($this->db->_error_number() == 1451)
如果发生这种情况时你需要做一些特别的事情
编辑记住,在Codeigniter 3.0(CI3)中,现在是$errors=$this->db->error()
你的问题是什么?您不能为此使用try
/catch
,因为$this->db->query
在失败时不会引发异常。你应该修复你的SQL查询。那么我该如何解决我的问题。。。如果用户尝试FK id,则用户不喜欢此数据库错误页。我只想忽略此页,我想使用会话闪存数据或$data['test']来传输此错误消息修复SQL错误比忽略它更好。首先尝试运行选择以检查该行是否存在。如果没有,则不要运行DELETE
并返回您自己的错误。如何修复sql错误?我在product.purchase\u id中的delete restrict
FK上设置了一个。因此,如果用户试图删除此包含键,数据库必须显示一个错误………首先尝试运行SELECT
查询,以确保您想要的行/键存在。它不会引发异常,但仍会触发一个警告(显示一个错误页面)@SajunaFernando先生,我使用你的代码,但它不会回显错误消息
if ($this->db->_error_number() == 1451)