如何用php pdo进行全文搜索?(how to do a full text search with php pdo?)

所以我在目前搜索网站时遇到了麻烦。 所以我目前的搜索将实现这一点; 用户输入“crik”,它将返回“cricket”进行搜索。 但是,如果用户输入“蟋蟀”,它将不会返回“板球”进行搜索。 我如何让它工作? 我目前的PHP代码是;

$searchQ = $_GET['search']; $ssss = $pdo->prepare('SELECT * FROM listing WHERE name LIKE :search'); $ssss->bindValue(':search', "%" . $searchQ . "%"); $ssss->execute();

我也尝试了这个,但它没有返回任何东西;

$ssss = $pdo->prepare('SELECT * FROM listing WHERE MATCH(name) AGAINST (:search IN BOOLEAN MODE) ');

So I'm having trouble with my current search for a website. So my current search will achieve this; user inputs "crik" and it will return "cricket" for a search. However if a user inputs "crickets" it wont return "cricket" for a search. How do I get this to work? my current php code is;

$searchQ = $_GET['search']; $ssss = $pdo->prepare('SELECT * FROM listing WHERE name LIKE :search'); $ssss->bindValue(':search', "%" . $searchQ . "%"); $ssss->execute();

I've also tried this but it didnt return anything;

$ssss = $pdo->prepare('SELECT * FROM listing WHERE MATCH(name) AGAINST (:search IN BOOLEAN MODE) ');

最满意答案

您可以更改搜索字符串

$searchQ = $_GET['search']; $searchArr = str_split($searchQ ); $searchQ_new = ""; foreach($searchArr as $alpha) { $searchQ_new .= $alpha . "%"; }

现在,您可以使用代码搜索$ searchQ_new

You can change the search string

$searchQ = $_GET['search']; $searchArr = str_split($searchQ ); $searchQ_new = ""; foreach($searchArr as $alpha) { $searchQ_new .= $alpha . "%"; }

Now you can use your code to search with $searchQ_new

如何用php pdo进行全文搜索?(how to do a full text search with php pdo?)

所以我在目前搜索网站时遇到了麻烦。 所以我目前的搜索将实现这一点; 用户输入“crik”,它将返回“cricket”进行搜索。 但是,如果用户输入“蟋蟀”,它将不会返回“板球”进行搜索。 我如何让它工作? 我目前的PHP代码是;

$searchQ = $_GET['search']; $ssss = $pdo->prepare('SELECT * FROM listing WHERE name LIKE :search'); $ssss->bindValue(':search', "%" . $searchQ . "%"); $ssss->execute();

我也尝试了这个,但它没有返回任何东西;

$ssss = $pdo->prepare('SELECT * FROM listing WHERE MATCH(name) AGAINST (:search IN BOOLEAN MODE) ');

So I'm having trouble with my current search for a website. So my current search will achieve this; user inputs "crik" and it will return "cricket" for a search. However if a user inputs "crickets" it wont return "cricket" for a search. How do I get this to work? my current php code is;

$searchQ = $_GET['search']; $ssss = $pdo->prepare('SELECT * FROM listing WHERE name LIKE :search'); $ssss->bindValue(':search', "%" . $searchQ . "%"); $ssss->execute();

I've also tried this but it didnt return anything;

$ssss = $pdo->prepare('SELECT * FROM listing WHERE MATCH(name) AGAINST (:search IN BOOLEAN MODE) ');

最满意答案

您可以更改搜索字符串

$searchQ = $_GET['search']; $searchArr = str_split($searchQ ); $searchQ_new = ""; foreach($searchArr as $alpha) { $searchQ_new .= $alpha . "%"; }

现在,您可以使用代码搜索$ searchQ_new

You can change the search string

$searchQ = $_GET['search']; $searchArr = str_split($searchQ ); $searchQ_new = ""; foreach($searchArr as $alpha) { $searchQ_new .= $alpha . "%"; }

Now you can use your code to search with $searchQ_new