我有一个用户查询和一个数据库。我的数据库包含表。我很想知道的是我查询数据库的方法。我在想的是:
- 将查询分隔成一个由空格分隔的数组
 - 遍历每个单词并执行 LIKE '%{$word}%' OR
 - 在此之上,就在每次迭代之前,做一个“与”
 
问题是,它不能正常工作。它没有对与我的查询匹配的精确电子邮件进行切割。这是我的代码:
$i=0;
$userQuery = $_POST['q']; // q = "Jonathan gmail"
$sql = "SELECT * FROM addresses WHERE ";
$parts = explode(' ',$userQuery);
$cnt=count($parts);
foreach($parts as $part){
  $part = mysql_real_escape_string($part);
  if($i!==$cnt-1){
        $sql.="(
                addresses.name LIKE  '%".$part."%' OR
                addresses.localpart LIKE  '%".$part."%' OR
                addresses.domain LIKE  '%".$part."%'
            ) AND
        ";
    } else {
        $sql.="(
                addresses.name LIKE  '%".$part."%' OR
                addresses.localpart LIKE  '%".$part."%' OR
                addresses.domain LIKE  '%".$part."%'
            )
        ";
    }
    $i++;               
}
}
我的问题是这个逻辑有什么问题?这似乎是准确的。