Mysql使用布尔值给出错误值的电子邮件搜索

时间:2013-02-18 08:41:37

标签: php mysql

我的搜索查询有问题。我正在搜索电子邮件。

我的搜索查询如下:

  $query = sprintf("SELECT mailer_subscribers.id, mailer_subscribers.email, mailer_subscribers.status,mailer_segmentlinker.segment_id, mailer_segmenten.segmentnaam FROM mailer_subscribers 
                        JOIN mailer_segmentlinker ON mailer_subscribers.id=mailer_segmentlinker.subscriber_id
                        JOIN mailer_segmenten ON mailer_segmentlinker.segment_id=mailer_segmenten.id
                        WHERE MATCH (email) AGAINST ('%s*' IN BOOLEAN MODE)", $key);

但是当我在示例“john.smith”中键入关键字时,它会返回所有具有相同名称或姓氏的值

john.smith@example.com
john.notsmith@example.com
smith.hendrix@example.com
josh.josh@smith.com

我需要它会给我一个john.smith列表。


编辑:

帮助我的解决方案是这样的:  WHERE mailer_subscribers.email LIKE '%%%s%%'", $key);

1 个答案:

答案 0 :(得分:1)

尝试将您的关键字放在双引号中以搜索确切的短语。

... AGAINST ('\"%s*\"' IN BOOLEAN MODE) ...

<强> Boolean Full-Text Searches

  'p'香蕉'   查找包含两个单词中至少一个的行。

     

'“有些话”'   查找包含完整短语“some words”的行   (例如,包含“某些智慧词”但不包含“某些词”的行   噪音词“)。