我有一个 MySQL 表格, 该表格有一个用于电子邮件地址的字段, 其定义是独一无二的。 例如, 可以说我所有的表格都允许用户在表格中插入他们的电子邮件地址 。
由于电子邮件字段是独一无二的, 如果他们试图两次输入同一个电子邮件, 查询会失败。 我对两种情景之间的权衡表示好奇:
(1) 在执行插入前运行快速 SELECT
语句。 如果选中返回结果, 请通知用户, 不运行 INSERT
语句 。
(2)) 运行 INSERT
语句,并检查重复的输入错误
// snippet uses PDO
if (!$prep->execute($values))
{
$err = $prep->errorInfo();
if (isset($err[1]))
{
// 1062 - Duplicate entry
if ($err[1] == 1062)
echo This email already exists. ;
}
}
另外,请假定正常使用, 意思是重复的条目应该最小化。 因此, 在第一个假设情况下, 您显然有管理权来运行一个额外的查询, 以插入 < 坚固 > / 坚固 >, 而第二则您要依赖错误处理 。
还有,我很想知道关于编码风格的想法。 我的心说, 做一个防御程序员! 在插入前先检查数据! 我的大脑说, 嗯, 也许让 MySQL 帮你检查数据更好。
- 请注意这不是一个“我该怎么做”的问题,而是一个“我为什么要用特定的方式做这个”的问题。我包括的小代码片起作用了,但我好奇的是解决问题的最佳方法。