Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当codeigniter中发生数据库错误时,如何在没有错误页面的情况下显示错误消息_Php_Mysql_Codeigniter - Fatal编程技术网

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)