mySql 从 "domain.com" 中搜索 "sub.domain.com"

mySql search "sub.domain.com" from "domain.com"

夏天:

在MySqltable行是

我想从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;
}

问题: 现在,我想将这个概念转移到数据库中...... 在数据库中我的行是,

现在我想在 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, '%');