现在我设置了一个数据库,如下例所示:
id (int(11)) | name (varchar(20)) | food (varchar(20)) | fastfood (varchar(3)) | pricerange (int(11))
1 | McDonalds | American | Yes | 1
2 | Outback | BBQ | No | 2
3 | Mortons | Steakhouse | No | 3
现在我设置了一个用户表单,如下所示:
<form action="index.php" method="GET" id="sheet">
<select name="name1" id="name1">
<option value="%">No Preference</option>
<option value="outback">Outback</option>
<option value="mcdonalds">McDonalds</option>
<option value="mortons">Mortons</option>
</select>
<select name="food1" id="food1">
<option value="%">No Preference</option>
<option value="american">American</option>
<option value="bbq">BBQ</option>
<option value="steakhouse">Steakhouse</option>
</select>
<select name="fast" id="fast">
<option value="%">No Preference</option>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
<select name="price" id="price">
<option value="%">No Preference</option>
<option value="1">Cheap</option>
<option value="2">Middle Ground</option>
<option value="3">Expensive</option>
</select>
<input type="submit" value="Submit" id="submit"></input>
<input type="clear" value="Clear" id="Clear"<input>
</form>
现在,当我运行以下查询时,如果不是所有字段都匹配,我将不会得到任何结果。int
当涉及到s & s时,如何操纵查询以显示基于最佳匹配的结果varchar
?
$query = "SELECT * FROM .$usertable
WHERE $name LIKE '$name' AND
$food LIKE '$food1' AND
$fastfood LIKE '$fast' AND
$pricerange LIKE '$price' ";
全文搜索不起作用,因为 INT 和“OR”不会显示基于最佳匹配的结果。假设用户选择了 4 个选项中的 3 个,例如:BBQ | Yes | 2
现在,在这种情况下,最好的匹配是Outback
,但是因为它也在尝试匹配快餐,所以它不会返回任何结果。如果有更多选择,它会变得更加复杂。
如果有人能对这个问题的解决方案有所了解,我将非常感激。