gpt4 book ai didi

php - 是否在插入/更新之前验证数据?

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:56 25 4
gpt4 key购买 nike

如果您在数据库(例如 MySQL)中正确定义了检查和断言,那么在将记录更新或插入数据库(例如 MySQL)之前验证数据是否是一种好的做法,甚至值得吗?

据我所知,只要您必须执行的检查并不复杂并且可以由数据库本身完成,验证数据的方式看起来很浪费...首先是 PHP,然后再是 MySQL。

我对此是否正确?

最佳答案

一般来说,您应该尽快进行验证。在这种情况下,这意味着在您的 PHP 代码中。为什么?

  1. 效率更高。如果它只会以错误响应,为什么要将数据发送到数据库(可能通过网络,甚至在不同的国家/地区)?最好先避免错误。

  2. 它可以更轻松地向您的用户报告有用/友好的错误消息。有时可能会充分解析数据库错误以生成有用的错误消息,但大多数数据库错误对最终用户来说并不是很友好。最好尽可能靠近用户生成错误。

现在,即便如此,在您的数据库中进行检查仍然很好,但它们应该作为最后的手段,并且当您的数据库抛出错误时,它应该被视为 错误,不是“数据验证功能”。换句话说,如果您遇到数据库异常,则表明您的 PHP 代码损坏

异常(exception):最近有一次我选择违反这一原则,因为需要进行一些相当复杂的验证。我选择依靠数据库进行“完整”验证(但要确保我的异常文本很容易被解析,因此仍然可以生成用户友好的错误)。我仍然让我的客户端代码进行基本的输入验证,但是由于完整验证所涉及的复杂性,我不想维护两个功能相同的代码位(一个在客户端软件中,一个在数据库中).我觉得在两个地方拥有相同的功能更有可能导致 future 的错误,以防一个更新而另一个没有更新。在这种情况下,服务器端验证代码大约是一个 4 页长的 PL/Perl 存储过程,它充当 INPUT/UPDATE 触发器。

结论:您几乎不应该依赖数据库来进行用户验证。我能想到的唯一异常(exception)与您所问的相反:非常复杂的检查;不是真正简单的。

关于php - 是否在插入/更新之前验证数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8483232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com