通过 MySQL 架构或 PHP 检查输入数据?

Check input data by MySQL schema or PHP?

假设我想检查一条评论是否重复。

我有两个选择:

1) 创建对数据库的查询并检查它: select * 来自 content=$santized_content 和 post_id=$id

的评论

2) 为注释和 post_id 创建唯一索引并捕获 MySQL 错误。

对于我复杂而繁忙的应用程序来说,尽可能减少对数据库的查询次数很重要。然而,第一个选项更常见和可读。

您可以将此问题推广到其他情况。

我更喜欢数字 2,

  1. 您的 PHP 脚本将减少代码。
  2. 评论重复与否自动检测

那么这就是UNIQUE的功能

MySQL绝对比PHP快。我总是更喜欢对 suitable 键使用失败的 INSERT 或 REPLACE 而不是签入 PHP。

唯一的例外可能是您的密钥变得非常复杂,这显然会在 MySQL 上对所有查询 运行 针对 table 产生开销。然而,对于什么太复杂而不值得做这个问题,没有一个放之四海而皆准的答案。这主要是现实生活测试的问题。