对于我正在制作的相关产品部分,它不会显示我希望它显示的结果。
这是我的代码:
// 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");