php – 表中的MySQL搜索关键字OR或AND或全文匹配
发布时间:2020-12-13 15:56:46 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc… expects parameter 1 to be resource or result????????????????????????????????????31个 我有一个搜索表单来搜索MySQL中的产品,表格包含: 1)id 2)条形码 3
参见英文答案 >
mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc… expects parameter 1 to be resource or result????????????????????????????????????31个
我有一个搜索表单来搜索MySQL中的产品,表格包含: 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){ ?> 错误文字 正如您所看到和理解的那样,我有一个输入文本可以在数据库中进行搜索. 如果我搜索关键字:“三星”,那么我从制造商三星获得产品. 如果我搜索模型“S6 Edge”,那么我会得到带有S6或S6型号的产品 但 如果我使用2个字的关键字“samsung s6”,那么搜索结果为空 知道为什么吗? 编辑: 这是我在小提琴中使用的完整代码 https://jsfiddle.net/psnf0arw/ 查看完整的PHP代码会更容易理解 解决方法
如果您打算在任何这些字段中找到任何关键字,则可以尝试使用REGEXP而不是LIKE.
$searchterms = mysqli_real_escape_string($database,$_POST['keywords']); $searchexp = implode("|",str_word_count($searchterms,1)); $result=mysqli_query($db," SELECT * FROM `products` WHERE `barcode` REGEXP '$searchexp' OR `product_name` REGEXP '$searchexp' OR `model` REGEXP '$searchexp' OR `manufacturer` REGEXP '$searchexp' "); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |