如何在codeigniter中发生数据库错误时如何显示没有错误页面的错误消息

时间:2013-10-30 19:49:44

标签: php mysql codeigniter

我有两个表产品购买。 我在on delete restrict列中设置product.purchase_id FK,其中purchase.purchase_id列。然后,如果我尝试用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

但我只想提醒一下。所以我只是尝试try...catch语法我的代码就在这里

  try{
      $this->db->query("delete from product where product_id='$delete'");
  }
   catch (Exception $e) {
              echo "an error occured during query" ;
   }

但是这段代码不起作用。它还会在白页中显示以上错误...

2 个答案:

答案 0 :(得分:4)

参考Codeigniter foreign key constraint check

在database.php文件中找到行

<input type="text" name="name" class="txtbox" />

并将其设置为FALSE。这将阻止Codeigniter在屏幕上打印错误。

同样在删除功能中,您可以查看:

$db['default']['db_debug']

如果发生这种情况,你需要做一些特别的事情。

  

编辑请记住,在Codeigniter 3.0(CI3)中,现在是$ errors = $ this-&gt; db-&gt; error();

答案 1 :(得分:3)

codeigniter查询不会抛出异常。而是用它来判断是否发生了错误。

if ($this->db->_error_message()){
    $msg = $this->db->_error_message();

    echo $msg;
}

简单就是那个