预防人名(数据库)

时间:2014-05-30 18:32:06

标签: php mysql sql pdo user-input

所以我有一个网站(使用PHP,Mysql和PDO),其中一个人必须加入他们的真实姓名(名字和姓氏)。因为我想禁止一些名字所以我创建了一个db表" bannedpersonnames" 其中列是:id,firstname,lastname 它们(名称)都可以为NULL。

NULL表示名称可以是任何

如果我想禁止所有名为" Justin Bieber"表中的一行是

  

贾斯汀|比伯

如果有人" Mark Bieber"现在尝试加入,他的名字是允许的,因为名字确实匹配。

但如果我想禁止所有姓氏比伯的人,那么其中一行将是

  

NULL |比伯

一些例子:

表格内容:

Justin | Bieber
NULL | Timberlake
  • "贾斯汀示例",允许
  • " Justin Timberlake",禁止,姓氏被禁止
  • "示例Timberlake",不允许,姓氏仍然被禁止
  • " Justin Bieber",禁止,全名被禁止

所以我的问题是;是否有更好的方法来做到这一点以及如何做?当然,这并不能解决所有名称问题......我需要一个MySQL代码

2 个答案:

答案 0 :(得分:0)

我认为这种逻辑符合你的要求。它返回任何匹配的"被禁止的人",如果有的话:

select bp.*
from BannedPersons bp
where (bp.firstname is null or bp.firstname = $firstname) and
      (bp.lastname is null or bp.lastname = $lastname);

答案 1 :(得分:0)

如果你真的想这样做,我建议看一下触发器。

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

你可以实现一个触发器,触发你的用户表的每个插入,检查某个逻辑是否阻止了一个名称。