3

我有两张表ProductPurchase。我在列中设置了一个on delete restrictFK 。然后,如果我尝试使用 FK 删除 product.product_id,它会显示错误,就像product.purchase_idpurchase.purchase_id

发生数据库错误

错误号:1451

无法删除或更新父行:外键约束失败(`another_bata`.`product_purchase_item`, CONSTRAINT `FK_product_purchase_item_1` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON UPDATE CASCADE)

从 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" ;
   }

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

4

2 回答 2

4

参考Codeigniter 外键约束检查

在 database.php 文件中找到该行

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

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

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

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

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

编辑请记住,在 Codeigniter 3.0 (CI3) 中,现在是 $errors = $this->db->e​​rror();

于 2015-05-15T12:10:33.847 回答
3

codeigniter 查询不会抛出异常。而是使用它来确定是否发生错误。

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

    echo $msg;
}

就那么简单

于 2013-10-30T19:59:29.283 回答