【问题标题】:Search string in SQL LIKE in multiple rows在多行中搜索 SQL LIKE 中的字符串
【发布时间】:2015-01-08 09:52:01
【问题描述】:

我正在尝试进行“相关产品”查询以搜索 5 个相关产品,但它给出了以下错误: 错误图片:http://puu.sh/eeo5n/a845ef5ba3.png

这是我的代码

    // Info current t-shirt. Normally from database
    $name = "Luftrauser T-shirt";
    $description = "Stylish LUFTRAUSERS T-shirt designed by Amon26.";
    $relatedSearch = $name . $description;

    // Query which searches for related items
    $query = $db->prepare("SELECT * FROM tbl_products WHERE name, description LIKE '%:relatedSearch%'");
    $query -> bindParam("relatedSearch", $relatedSearch, PDO::PARAM_STR);
    if($query -> execute()) {
        while($related = $query->fetch(PDO::FETCH_OBJ)) {
            echo $related->title . "</br>";
        }
    }

为什么它不返回包含我用 LIKE 搜索的值的行?

【问题讨论】:

  • 为什么不返回行?你读过错误信息吗?这表示您的查询中有 语法错误。您不能制作 a、b 列的列表并将其与单个参数匹配,而不用 OR 或 AND 来区分 then ,即参见@Matt 的答案。
  • 感谢大家的回答。没有错误了。但不知何故,当我把它放在查询中时,它并没有从查询中获取数据。我现在尝试回显 $related->description 但它没有回显。并且数据库中应该有更多与 $relatedSearch 变量匹配的单词。数据库截图:puu.sh/eep39/6920910c76.png

标签: php sql sql-server sql-server-2008 sql-like


【解决方案1】:

如果您希望搜索在名称和描述中查找并匹配任何一个

SELECT * 
FROM tbl_products 
WHERE description LIKE '%:relatedSearch%' OR name LIKE '%:relatedSearch%'

如果您希望搜索在名称和描述中查找并匹配两者

SELECT * 
FROM tbl_products 
WHERE description LIKE '%:relatedSearch%' AND name LIKE '%:relatedSearch%'

【讨论】:

  • 您的回答中有一个小错字。第一句话应该有OR而不是AND。
  • 不,它应该是 AND,因为它在两者中查找并匹配任何一个。第二个查询同时查找并匹配 BOTH
  • @Jim 可能是真的,这就是为什么它说匹配 EITHER
  • @Jim 如果我使用 OR,它会说“查看名称或描述并匹配一个”
猜你喜欢
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2018-12-06
  • 2013-03-14
  • 2019-09-08
  • 2017-06-23
  • 2016-12-24
  • 2022-01-02
相关资源
最近更新 更多