sql LIKE 不显示要获取的所需结果


sql LIKE does not show wanted results to fetch

对于我正在制作的相关产品部分,它不会显示我希望它显示的结果。

这是我的代码:

    // Info current t-shirt. Normally from database
    $name = "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 description LIKE '%' :relatedSearch '%' OR name LIKE '%' :relatedSearch '%' LIMIT 5");
    $query -> bindParam("relatedSearch", $relatedSearch, PDO::PARAM_STR);
    if($query -> execute()){
        while($related = $query->fetch(PDO::FETCH_OBJ)) {
            echo "<p style='color:black;'>" . $related->description . "</p></br>";
        }
    }

当我将绑定参数$relatedSearch替换为$name时,它确实显示了 5 个结果。但是当我搜索$relatedSearch变量时,它没有显示任何内容。似乎它搜索了完整的字符串,没有任何匹配的内容。相反,我只希望它在该字符串中查找单个单词

额外:数据库 http://puu.sh/eeviJ/133a2de7c9.png 的屏幕截图

您需要在绑定中包含冒号。我也会尝试像这样构建您的查询。

$query = $db->prepare("SELECT * FROM tbl_products 
                       WHERE description 
                       LIKE :relatedSearch OR name LIKE :relatedSearch LIMIT 5");
$query -> bindParam(":relatedSearch", '%' . $relatedSearch . '%', PDO::PARAM_STR);

但是,也许这更像是你要找的......

$query = $db->prepare("SELECT * FROM tbl_products 
                       WHERE description 
                       LIKE :description OR name LIKE :name LIMIT 5");
$query -> bindParam(":description", '%' . $description . '%', PDO::PARAM_STR);
$query -> bindParam(":name", '%' . $name . '%', PDO::PARAM_STR);

也许它对你有用。

不要在 % 后使用单引号。

$query = $db->prepare("SELECT * FROM tbl_products WHERE description LIKE '% :relatedSearch %' OR name LIKE '% :relatedSearch %' LIMIT 5");