mySql 从 "domain.com" 中搜索 "sub.domain.com"
mySql search "sub.domain.com" from "domain.com"
夏天:
在MySqltable行是
- domain.com
- domain.net
- whosebug.com
我想从table中搜索"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;
}
}
这里的工作是,我有域名列表,
但是当我想搜索域时,它可能是 domain/sub 域(我的理论上,但这个理论仍然不正确)
所以这个循环搜索域
中的黑名单
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;
}
问题:
现在,我想将这个概念转移到数据库中......
在数据库中我的行是,
- domain.com
- domain.net
现在我想在 table
中搜索 sub.domain.com
如何或更好的主意?
My aim is, to just check email blacklist domain from my blacklist domain
list in database
谢谢
如果您的数据库中有 sub.domain.com
并搜索 domain.com
,您会使用 LIKE
:
SELECT * FROM domains WHERE domain LIKE '%domain.com%';
但你没有
也就是说,你需要 "reversed" 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, '%');
夏天:
在MySqltable行是
- domain.com
- domain.net
- whosebug.com
我想从table中搜索"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;
}
}
这里的工作是,我有域名列表, 但是当我想搜索域时,它可能是 domain/sub 域(我的理论上,但这个理论仍然不正确) 所以这个循环搜索域
中的黑名单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;
}
问题: 现在,我想将这个概念转移到数据库中...... 在数据库中我的行是,
- domain.com
- domain.net
现在我想在 table
中搜索 sub.domain.com如何或更好的主意?
My aim is, to just check email blacklist domain from my blacklist domain list in database
谢谢
如果您的数据库中有 sub.domain.com
并搜索 domain.com
,您会使用 LIKE
:
SELECT * FROM domains WHERE domain LIKE '%domain.com%';
但你没有
也就是说,你需要 "reversed" 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, '%');