sql LIKE没有显示要获取的想要的结果

时间:2015-01-08 11:28:32

标签: php sql fetch sql-like

对于相关产品,我要说它不会显示我想要显示的结果。

这是我的代码:

    // 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>";

        }
    }

当我为$ name替换bindparam $ relatedSearch时,它确实显示了5个结果。但是当我搜索$ relatedSearch变量时,它并没有显示任何内容。它似乎搜索完整的字符串,没有任何匹配。而不是我只是想让它在该字符串中寻找单个单词

额外:数据库http://puu.sh/eeviJ/133a2de7c9.png

的屏幕截图

2 个答案:

答案 0 :(得分:1)

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

$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);

答案 1 :(得分:0)

也许这对你有用。

请勿在{{1​​}}之后使用单引号。

%