首页 > 解决方案 > 如何用一个查询搜索多个单词?

问题描述

我正在尝试使用以下查询进行简单的 php 搜索。这非常有效,但是查询只给出第一个单词的结果。有没有办法使用单个查询获得所有三个单词的组合结果?

$stmt = $pdo->prepare("SELECT * FROM walldb WHERE (wallname LIKE :searchq1 OR :searchq2 OR :searchq3) LIMIT :stat, :limt");

标签: mysqlsqlstringwhere-clausesql-like

解决方案


您需要重复该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,则条件为假,因此只有第一个条件起作用(这就是您所看到的)。


推荐阅读