MySQL + PhP - 搜索多个单词

时间:2014-05-06 04:48:05

标签: php mysql string

早上好!

想要使用几个将在html输入上传递的单词进行搜索。

示例:

  • 如果输入"gfilgueiras"将返回3条记录。
  • 如果输入"informativo gfilgueiras"将返回2条记录。
  • 如果您输入"gfilgueiras :: 2",则只会返回1条记录。

我直接搜索viewLogs。

我尝试了concat,但没有成功。

对不起,如果我的英语不好,我会使用翻译。

示例数据:

Screenshot

谢谢大家。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM viewLogs WHERE concat(all field you want ) REGEXP "gfilgueiras"

答案 1 :(得分:0)

你想要什么是不可能的,你需要在你的WHERE子句上使用AND,假设搜索词分隔符是空格。

// $searchWord is informativo gfilgueiras
if(!empty($searchWord)) {

     // separates the searched word by space and puts it in array, if no space, put in array.
     $searchWords = strpos($searchWord,' ') !== false ? explode(' ',$searchWord) : array($searchWord);

     // this is just an example, use sql prepared statement for this
     $sqlString = "SELECT * FROM viewLogs WHERE concat(ip,login, descricao, data, hora, acao, severidade) REGEXP '$searchWord[0]' ";

     if(count($searchWords) > 0) {
         if(isset($searchWords[0])) {
             foreach($searchWords as $index => $searchWord) {
                 if($index > 0) {
                     // this is just an example, use sql prepared statement for this
                     $sqlString .= "AND WHERE concat(ip,login, descricao, data, hora, acao, severidade) REGEXP '$searchWord'";
                 }
             }
         }
    }
}