当代码点火器中发生数据库错误时,如何显示没有错误页面的错误消息


How display error message without error page when database error occured in codeigniter

我有两个表产品和购买我在product.purchase_id列中设置了一个on delete restrict FK,purchase.purchase_id列。然后,如果我尝试使用FK删除product.product_id,它会显示错误,就像

发生数据库错误错误号:1451无法删除或更新父行:外键约束失败("another_bata.product_purchase_item",约束"FK_product_purchase_item_1"外键("product_id")引用更新级联上的"产品"("product_id")从 product_id='158' 的产品中删除文件名: C:''xampp''htdocs''rima_shoe''system''database''DB_driver.php行号:330

但我只想对此保持警惕。 所以我只是尝试一个try...catch语法我的代码在这里

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

但是此代码不起作用。 它还在白页中显示上面的错误...

参考代码点火器外键约束检查

在数据库中.php文件找到该行

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

并将其设置为 FALSE。这将防止代码点火器在屏幕上打印错误。

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

if ($this->db->_error_number() == 1451)

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

编辑 Remeber 在 Codeigniter 3.0 (CI3) 中,现在$errors = $this->db->error();

代码点火器查询不会引发和异常。而是使用它来确定是否发生了错误。

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

就这么简单