php or关键字,php – 表中的MySQL搜索关键字OR或AND或全文匹配

1)id

2)条形码

3)product_name

4)制造商

5)模型

我有更多的领域,如价格税等,但它们现在并不重要.

使用以下代码我正在搜索数据库,它工作得很好,但现在有一个问题.这是代码

首先是HTML表单

现在是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为mysqli_result,布尔值为

正如您所看到和理解的那样,我有一个输入文本可以在数据库中进行搜索.

如果我搜索关键字:“三星”,那么我从制造商三星获得产品.

如果我搜索模型“S6 Edge”,那么我会得到带有S6或S6型号的产品

如果我使用2个字的关键字“samsung s6”,那么搜索结果为空

知道为什么吗?

编辑:

这是我在小提琴中使用的完整代码

查看完整的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'

");

标签:php,mysql,database,sql,html

来源: https://codeday.me/bug/20190708/1400018.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值