2016-04-02 25 views
-2

Anahtar sözcük tabanlı bir eşleşme bulmak için birden fazla sütun arayacak bir arama özelliği yapmaya çalışıyorum. Örneğin, kullanıcı arama için bir anahtar kelime girdiğinde, beş kategori sütununda bir arama yapmalı ve anahtar kelimeyi içeren tüm satırların ilgili satır adlarını kendi kategori sütunlarından birinde döndürmem gerekir. Ben aramak ama her zaman için çeşitli yollar denediBirden çok sütun arasında arama yapma

<?php 
    mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect."); 
    mysql_select_db($dbname) or die("could not find database."); 
    $result = ""; 
    //collect info from database 
    if(isset($_POST['search'])) { 
     $searchq = $_POST['search']; 
     $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq); 
//SQL query 
     $query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%$searchq%' OR category2 LIKE '%$searchq%' OR category3 LIKE '%$searchq%' OR category4 LIKE '%$searchq%' OR category5 LIKE '%$searchq%'") or die("No records found."); 
     $count = mysql_num_rows($query); 
     if($count == 0) 
     { 
      $output = "There's no search result"; 
     } 
     else { 
      while($array = mysql_fetch_assoc($query)) 
    { 
    ?> 
     <li><?php echo $array['name'];?></li> 
    <?php 
    } 
    ?> 
     } 
    } 
    </ul> 

, ya orada bir hatadır veya kod sadece durumu ne olursa olsun her satır adını döndürür şöyledir: kodudur. Soruna bir çözüm takdir edilecektir.

+0

Tam metin arama en iyi seçenek olabilir. http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html – user1751825

+0

'$ searchq = preg_replace (" # [^ 0-9a-z] #i "," "olduğundan emin misiniz? , $ searchq); 'hat düzgün çalışıyor? – Exception

+0

Hmmm, a) preg_replace satırından '$ searchq' yankılamayı denediniz mi? b) Hatalar oluşursa, ne söylenir? Genel yaklaşım ve SQL benim için tamam görünüyor (denemeden veya verilerinizi bilmeden ...). – ahuemmer

cevap

0
<?php 
    mysql_connect($dbhost, $dbuser, $dbpass) or die("could not connect."); 
    mysql_select_db($dbname) or die("could not find database."); 
    $result = ""; 
    //collect info from database 
    if(isset($_POST['search'])&& $_POST['search'] != "")) { 
     $searchq = $_POST['search']; 
     $searchq = preg_replace("#[^0-9a-z]#i","",$searchq); 

//SQL query 
     $query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%".$searchq."%' OR category2 LIKE '%".$searchq."%' OR category3 LIKE '%".$searchq."%' OR category4 LIKE '%".$searchq."%' OR category5 LIKE '%".$searchq."%'"); 
     $count = mysql_num_rows($query); 
     if($count == 0) 
     { 
      $output = "There's no search result"; 
     } 
else { 
      while($row= mysql_fetch_assoc($query)) 
      { 

      echo $row['name']; 

      } 

     } 
    } 
    ?> 
İlgili konular