2015-03-09 6 views
0

Здравствуйте, я получил приведенный ниже код из учебника Youtube, и он работает, если я ищу строку, которая существует только в 1 столбце. Если я совмещаю поиск чего-то, что находится в двух разных столбцах, я не получаю никаких результатов. Например, если Джек находится в столбце 1 и Кролик в колонке 2, если я ищу «Джека Кролика», то я не получаю никаких результатов. Если я ищу «Джек», то он работает, тот же для «Кролика».php Msql поиск нескольких столбцов

Я знаю, что исправление находится в строке ниже, но когда я изменил строку в соответствии с другими сообщениями здесь, в stackoverflow, которые я искал, у меня появились ошибки, потому что их код был немного иным, чем мой.

$query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' ") or die("Could not search!"); 

Весь код поиска ниже

<?php 
mysql_connect("localhost", "Name_Name", "Password") or die("Could not connect"); 
mysql_select_db("Name_Databse") or die("Could not find db!"); 
$output = ' ' ; 
//collect 

if(isset($_POST['search'])) { 
     $searchq = $_POST['search']; 
     $searchq = preg_replace("#[^0-9a-z]#i", " ", $searchq); 

     $query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' ") or die("Could not search!"); 
     $count = mysql_num_rows($query); 
     if($count == 0) { 
     $output = 'There was no such results!'; 

     }else{ 
      while($row = mysql_fetch_array($query)){ 
      $id = $row['id']; 
      $aHref = $row['aHref']; 
      $columnOne = $row['columnOne']; 
      $columnTwo = $row['columnTwo']; 
      $inputDiv = $row['inputDiv']; 
      $image = $row['image']; 


$output .= '<a href="' . $aHref . '.html" class="link"> <div class="Poster">' . ' <div class="columnOne">' . $columnOne . ' </div> <div class="columnTwo">' . $columnTwo . ' </div> <div class="inputDiv">' . $inputDiv . ' </div> <div class="image"><img src="' . $image . '.jpg"/>' . '</div> </div></a>'; 


      } 
    } 

} 


?> 

<!DOCTYPE html> 
<html> 
<head>    
     <title> Search </title> 
     <link rel='stylesheet' type='text/css' href='Styler.css'/> 

</head> 
<body> 



        <form action='search.php' method='post' style="margin: 0 0 25px;"> 
        <input type='text' name='search' size='50' placeholder="Search here"/> 
        <input type='submit' value='Search' /> 
        </form> 

         <?php print("$output"); ?> 





</script>    
</body> 
</html> 
+0

Какова конкретная ошибка MySQL, которую вы получаете? – Maximus2012

+1

Ну, вот и все. Это классика: * «Левая рука не знает, что делает или держит правая рука» *. Вам нужно использовать 'explode()'. Ya не может иметь ваш пирог 'AND' и его тоже есть ;-) –

+2

Попробуйте включить' mysql_error() ', чтобы проверить, есть ли какая-либо ошибка. Например: 'или die (« Не удалось выполнить поиск: ».mysql_error());' – bcesars

ответ

3

Как насчет сочетания обоих столбцов и поиска, что, как хорошо:

SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' OR CONCAT_WS(' ', columnOne, columnTwo) LIKE '%$searchq%' 

Это будет работать только, хотя, если они ищут «columnOne + [пространство ] + columnTwo ". Если вы хотите, чтобы они соответствовали ЛЮБОМ слову, которое они вводят (т. Е. Поиск «Jack W. Rabbit» по-прежнему соответствует), тогда вы должны использовать метод взрыва, как было предложено ранее.

+0

* Hm .... *, выглядит многообещающим. –

+0

* ... еще лучше. * Это «thee» решение. Отличная работа ;-) –

Смежные вопросы