在UPDATE查询之后检查`mysqli :: errno`以确定是否触发FATAL错误或警告

时间:2012-01-30 10:05:46

标签: php mysqli

使用mysql::query()进行UPDATE查询后,我可以检查mysqli::errormysqli::errno以获取错误消息或号码。

这对记录错误非常有用,但我应该根据错误的严重程度来决定该怎么做。

  • 如果是逻辑错误(行不存在,值无效)我应该中止执行。
  • 如果无法访问数据库或类似的东西,我应该记录错误但不要暂停程序执行。

    1. 我可以检查错误号,例如,当列未知时返回错误1054。问题是mysql手册列表附近有1000个错误,所以检查哪些是相关的似乎没有办法去,如果我只想到一个与问题相关的错误条件,那么风险很大。
    2. 其他问题是当行不在表中时,因为没有返回错误。

检查这种情况的常用方法是什么?

1 个答案:

答案 0 :(得分:1)

您首先概述自己的期望,然后询问什么是常见的。我会说,如果数据库层无法连接到数据库,则抛出数据库异常是很常见的。所以很明显,在某些系统级别上出现了问题。

为了与数据库进行交互而编写的应用程序应该自行决定如何处理这些数据库异常。通常,如果没有数据库,那么期望数据库工作的代码就无法工作。

现在针对您调用逻辑错误的情况。这取决于很多。我不会专注于特定的数据库错误代码(甚至可能会随着时间的推移而改变,新版本会添加新版本,旧版本可能不再使用)。而是集中精力判断某些操作的返回数据是否符合您的预期,并提供此类值,以防您到目前为止没有。

例如:如果更新至关重要,并且您需要验证更新是否成功,请仔细检查。但是,决定它是否至关重要并不是数据库层的一部分。这是您的应用程序代码的一部分,例如域模型事务脚本

Mysqli本身可以在某些情况下抛出一些例外,扩展名有一个例外:

class mysqli_sql_exception extends RuntimeException

对于连接错误,您需要抛出自己的异常。因此,检查返回值,然后抛出数据库异常。