综述
在MySql表中,行是
我想从表中搜索“sub.domain.com”......怎么样?
详情: 嗨,我正在研究电子邮件验证脚本,
我有一个列表中的黑名单域列表... 现在我想转移到数据库...
但有些逻辑问题..
以前的代码,包含数组
$blacklist_domains = array("domain.com","domain.net");
foreach($blacklist_domains as $val) {
//$domain can be with or without sub domain
if( preg_match( "/$val/", $domain)){
return true;
}
}
这里的工作是,我有域名列表, 但是当我想搜索域时,它可能是域/子域(我的理论上,但这个理论仍然不正确) 所以这个循环搜索域
中的黑名单foreach($blacklist_domains as $val) {
//$domain can be with or without sub domain
if( preg_match( "/$val/", $domain)){
return true;
}
}
**run time concept:**
//preg_match( "/blacklist/", "find this");
if( preg_match( "/domain.com/", "sub.domain.com")){
return true;
}
问题: 现在,我想将这个概念转移到数据库...... 在数据库中,我的行是,
现在我想在表
中搜索sub.domain.com如何或更好的主意?
我的目标是,从我的黑名单域中查看电子邮件黑名单域名 数据库中的列表
谢谢
答案 0 :(得分:0)
如果您的数据库中有sub.domain.com
并且正在搜索domain.com
,那么您将使用LIKE
:
SELECT * FROM domains WHERE domain LIKE '%domain.com%';
但你没有
这意味着,您需要“反转”LIKE
:
SELECT * FROM domains WHERE 'sub.domain.com' LIKE CONCAT('%', domain, '%');
为了提高代码效率,您甚至可以使用COUNT()
来获取直接在代码中使用的行数:
SELECT COUNT(*) AS count FROM domains WHERE 'sub.domain.com' LIKE CONCAT('%', domain, '%');