php - 是否应该在数据库级别处理唯一字段的验证?

标签 php mysql sql validation

我正在为我的 BSc 项目编写一个相当大的 Web 应用程序,并使用 MySQL 在 PHP 中编写它。

在创建 SQL 表时,我应该使用唯一字段吗?我问这个的原因是因为我正在将验证方法写入我的 PHP。例如,如果我想检查一个电子邮件地址是否已存在于数据库中,我会先创建一条 SQL 语句,查看是否返回了任何电子邮件地址,然后将初始 SQL 数据插入到数据库中。

如果我只是插入初始 SQL 数据,它会在整个语句中引发错误,因为电子邮件地址必须是唯一的。

这是进行验证的正确方法吗?

最佳答案

嗯……这是两个完全不同的东西。通过在数据库中的列上设置约束(如唯一性),您可以防止将错误的数据集插入到数据库中。这是确保数据一致性的基本内容。通过向您的应用程序添加验证,您可以添加另一层。在防止将错误的数据集插入数据库的同时,您主要创建方法来告诉用户他做错了什么。

这两个你都需要。一般来说,独特的约束不应该是唯一照顾你的数据库的东西。建议还使用外键约束,如果适用,还可以使用更复杂的数据验证(自定义约束)。但是,由于您使用的是 MySQL,因此您无法真正使用 MySQL

尽可能多地尝试,因为最终这将避免在您最终意识到数据库中的数据错误之前试图找出特定错误发生原因的许多麻烦。这真的很痛苦。

关于php - 是否应该在数据库级别处理唯一字段的验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15189724/

相关文章:

php - 存储替代名称的最佳位置?

php - 使用斜线后 URL 中的文本作为参数 - htaccess

php - 将动态创建的表单字段中的数据放入 MySQL 数据库中

mysql - 重复插入不保存

php - 准备好并绑定(bind)参数时,带有 mysqli 的 Sum(?) 返回 0 或错误结果

php - 获取 SVG 路径的外部坐标(getBBox)?

MySQL 加载数据 Infile Null 和表达式

php - SQL 更新显示成功,但未更新数据库中的表

mysql - 一段时间内每个用户的 SQL 平均请求数

sql - 下个月的第一天