我有一张表格
<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
当我查找green
时,会显示出2个结果,但如果我找到green house
则没有任何结果。
问题在于我必须搜索连续文本,例如...... My house is small...
如何改进此查询?谢谢
答案 0 :(得分:0)
尝试爆炸GET
变量。或者您可以尝试使用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");
我没有测试过这个,但你可以试试。