2016-12-20 174 views
1

我有一个表格搜索与多个单词

<form action="buscar.php" method="GET"> 
    <input type="text" name="q" /> 
</form> 

我的页面,他们表现出的结果不同的表

<?php 
require_once 'meekrodb.php'; 
$q = $_GET['q']; 
$results = DB::query("SELECT * FROM product_description WHERE description like '%$q%'"); 
foreach ($results as $row) { 
    echo $row['name']."<br>"; 
} 
?> 

比如我有这方面的短语在description

My car is big and green 
My house is small and green 

当我寻找​​,2结果出来了,但如果我找一个green house什么都没有出来。

的问题是,我必须寻找连续文本例如工作... My house is small...

如何提高这个查询?谢谢

回答

0

尝试爆炸GET variable.Or你可以尝试用CONCAT

玩爆炸

$q = $_GET['q']; 
$word_array = explode(" ",$q); 
$sqlnames="SELECT * FROM product_description WHERE"; 
$count = 0; 
foreach($word_array as $value){ 
if($count == 0){ 
    $sqlnames .= " description LIKE '" . $value ."'"; 
} 
else{ 
    $sqlnames .= " OR description LIKE '" . $value ."'"; 
} 
$count = 1; 
$sqlnames .= " OR description LIKE '" . $value ."'";  
} 
$sqlnames .="LIMIT 20"; 

CONCAT

(类似的东西)

$results = DB::query("SELECT * FROM product_description WHERE description LIKE '%$q%' OR description LIKE '%$q%' OR CONCAT(description, ' ', description) LIKE '%$q%' LIMIT 20"); 

我还没有测试过这个,但你可以尝试玩。

+0

它不工作的朋友。 – GePraxa