Obt*_*bto 3 php mysql database
如果您在数据库(例如 MySQL)中正确定义了检查和断言,那么在更新记录或将记录插入到像 MySQL 这样的数据库中之前验证数据是好的做法还是值得?
从我看来,只要您必须执行的检查并不复杂并且可以由数据库本身完成,那么先验证 PHP 中的数据,然后再验证 MySQL 中的数据看起来很浪费。
我的说法正确吗?
作为一般规则,您应该尽快进行验证。在这种情况下,这意味着在您的 PHP 代码中。为什么?
效率更高。如果数据库只会响应错误,为什么还要将数据发送到数据库(可能通过网络,甚至在不同的国家/地区)?最好先避免错误。
它使向用户报告有用/友好的错误消息变得更加容易。有时,可能可以充分解析数据库错误以生成有用的错误消息,但大多数数据库错误对最终用户来说看起来不太友好。最好是尽可能靠近用户生成错误。
现在,即使这样,在数据库中进行检查仍然是件好事,但它们应该作为最后的手段,并且当您的数据库抛出错误时,它应该被视为错误,而不是“数据验证功能”。换句话说,如果您遇到数据库异常,则表明您的 PHP 代码已损坏。
例外:最近有一次我选择违反这一原则,因为需要进行一些相当复杂的验证。我选择依赖数据库进行“完整”验证(但确保我的异常文本很容易解析,因此仍然可以生成用户友好的错误)。我仍然让客户端代码进行基本的输入验证,但由于完整验证涉及的复杂性,我不想维护两个功能相同的代码位(一个在客户端软件中,一个在数据库中) )。我认为在两个地方拥有相同的功能更有可能导致未来出现错误,以防一个地方更新而另一个地方没有更新。在本例中,服务器端验证代码是一个 4 页长的 PL/Perl 存储过程,充当 INPUT/UPDATE 触发器。
结论:几乎永远不应该依赖数据库来进行用户验证。我能想到的唯一例外与您所问的相反:非常复杂的检查;不是真正简单的。
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |