mysql - 如何用一个查询搜索多个单词?
问题描述
我正在尝试使用以下查询进行简单的 php 搜索。这非常有效,但是查询只给出第一个单词的结果。有没有办法使用单个查询获得所有三个单词的组合结果?
$stmt = $pdo->prepare("SELECT * FROM walldb WHERE (wallname LIKE :searchq1 OR :searchq2 OR :searchq3) LIMIT :stat, :limt");
解决方案
您需要重复该expr like val
模式:
WHERE wallname LIKE :searchq1 OR wallname LIKE :searchq2 OR wallname LIKE :searchq3
您的原始代码发生的事情是它被解释为:
WHERE
(wallname LIKE :searchq1)
OR (:searchq2)
OR (:searchq3)
所以基本上最后两个搜索词是在布尔上下文中评估的,就好像它们是条件一样。如果其中一个搜索词以 开头1
,则评估为真(并且将返回表中的所有行);否则,如果两者都不以 开头1
,则条件为假,因此只有第一个条件起作用(这就是您所看到的)。
推荐阅读
- c++ - string += s1 和 string = string + s1 之间的区别
- php - 我如何在 php 上正确使用 else 和 if ?
- javascript - 输入范围设定值不更新拇指显示
- python - Pandas/Numpy Groupby + 聚合(包括整数平均值)+ 过滤器
- javascript - 如何使用传单定位控件中的“createButtonCallback”
- hibernate - 在 SPRING MVC 中生成 OTP
- c - git 笔记迭代的例子
- ios - iOS 和 Payfor 集成问题
- javascript - 通过递增计数将键编号分配给对象中的键
- woocommerce - Woocommerce:为什么我得到产品的父类别而不是当前子类别?