我有一个搜索表单搜索产品在MySQL全文比赛,该表产品包含:表MySQL的搜索关键字OR或AND或反对
1)ID
2)条码
3)PRODUCT_NAME
4)制造商
5)模型
我有更多的领域,如价格税等,但他们现在并不重要。
随着下面的代码我正在搜索数据库,它工作得很好,但现在有一个问题。下面是代码
首先HTML表单
<form method="post" name="search">
<input type="text" name="keywords" value="...">
<input type="submit" value="search">
</form>
现在PHP和MySQL的代码
$searchterms= mysqli_real_escape_string($database,$_POST['keywords']);
$result=mysqli_query($db,"
SELECT * FROM `products`
WHERE `barcode` LIKE '%$searchterms%'
OR `product_name` LIKE '%$searchterms%'
OR `model` LIKE '%$searchterms%'
OR `manufacturer` LIKE '%$searchterms%'
");
$rows=mysqli_num_rows($result);
if(mysqli_num_rows($result)>0){
?>
我试图全文搜索,但我得到的错误
$searchterms= mysqli_real_escape_string($database,$_POST['keywords']);
$result=mysqli_query($database,"SELECT * FROM products
WHERE MATCH (product,manufacturer,model)
AGAINST ('$searchterms' IN NATURAL LANGUAGE MODE);");
$rows=mysqli_num_rows($result);
if(mysqli_num_rows($result)>0){
?>
错误文本 警告:mysqli_num_rows()期望参数1到be mysqli_result,布尔在给出
正如你所看到和理解的,我有一个输入文本在数据库中搜索。
如果我搜索关键字:“三星”,那么我从制造商三星获得产品。
如果我搜索模式“S6边缘”然后我得到与模型S6或S6边缘产品
但
如果我用2名字的关键字“三星S6”的搜索结果为空
任何想法为什么?
编辑:
以下是完整的代码,我使用的小提琴
https://jsfiddle.net/psnf0arw/
这将是更容易理解看PHP代码完整
有没有从'samsung'开始并以's6'结尾或包含它的条形码? – Yang
https://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html –
条码只有当我扫描产品条码来搜索产品时才有效,问题出在我想要搜索时2个关键字,比如(制造商,型号),例如“三星S6” –