2017-03-02 17 views
1

我知道这可能看起来像一个重复的,出了stackoverflow等问题,但在这里,我们走了。mysql php选择类似于另一个的记录

我试图做一个SQL语句,可以找到两个字符串之间的巧合

 function getProductos($keyWords){ 
      $keyWords = addslashes(strtolower($keyWords)); 
      $keyWordsExploded = explode(" ",$keyWords); 
      $sql = "SELECT * FROM PRODUCTOS WHERE HOMBRE_MUJER LIKE :keyWords OR CATEGORIA LIKE :keyWords" OR NOMBRE LIKE :keyWords; 

      $query = self::$conn->prepare($sql); 
      $query->execute(array(":keyWords"=> "%" . $keyWords . "%")); 

     return $query; 
     } 

In other part of the page I have this code: 
      <?php 
      if(isset($_GET['buscar'])){ 
       require(PAGES_DIR . "queries_products.php"); 
       $consultaProducts = new QueryProductos(); 
       $productos = $consultaProducts->getProductos($_GET['buscar']); 

       if($productos->rowCount()!=0){ 
        $arrayProductos = $productos->fetchAll(PDO::FETCH_ASSOC); 
        echo "<h3>Productos encontrados</h3>"; 
        foreach($arrayProductos as $fila){ 
         echo $fila['NOMBRE'] . " " . $fila['HOMBRE_MUJER'] . "<br>"; 
        } 
       }else{ 
        echo "<p class='alert alert-warning'>No results found <strong>" . $_GET['buscar'] . "</strong>"; 
       } 
      } 
     ?> 

一切工作正常,在我的数据库我店只有2 CATEGORIA值分别是:“hombres”和“ mujeres“,如果我搜索hombres,我得到的所有记录都有hombres的CATEGORIA,但是当我搜索hombres y mujeres时,我没有得到任何结果,我尝试过使用不同的句子,但我没有运气,希望你能帮助我解决这个问题,从而大大节省我。

+1

为什么你的发言结束前关闭了双引号? –

回答

0

试试这个:

function getProductos($keyWords) { 

    $keyWordsExploded = explode(" ",$keyWords); 
     $sql = "SELECT * FROM PRODUCTOS WHERE "; 
     $likes = array("HOMBRE_MUJER", "CATEGORIA", "NOMBRE"); // build up our columns which will be used in our condition in sql statment 

     $params = array(); 
     // building up our sql statment and collecting our params 
     foreach($likes as $like) { 
     foreach($keyWordsExploded as $kw) { 
      $sql .="$like like ? or "; 
      $params[] = "%".$kw."%"; 
     } 
     } 

    $sql = rtrim($sql, "or "); // trim the last "or" condition in sql statment 

    $query = self::$conn->prepare($sql); 

    $query->execute($params); 

    return $query; 
} 
+0

非常非常好的男人。非常感谢你的帮助! C: –

+0

我很高兴帮助你。 –