所以我有一个网站(使用PHP,Mysql和PDO),其中一个人必须加入他们的真实姓名(名字和姓氏)。因为我想禁止一些名字所以我创建了一个db表" bannedpersonnames" 其中列是:id,firstname,lastname 它们(名称)都可以为NULL。
NULL表示名称可以是任何
如果我想禁止所有名为" Justin Bieber"表中的一行是
贾斯汀|比伯
如果有人" Mark Bieber"现在尝试加入,他的名字是允许的,因为名字确实匹配。
但如果我想禁止所有姓氏比伯的人,那么其中一行将是
NULL |比伯
一些例子:
表格内容:
Justin | Bieber NULL | Timberlake
所以我的问题是;是否有更好的方法来做到这一点以及如何做?当然,这并不能解决所有名称问题......我需要一个MySQL代码
答案 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
你可以实现一个触发器,触发你的用户表的每个插入,检查某个逻辑是否阻止了一个名称。