我试图在搜索中找到类似于查询的结果,例如,当有人搜索“tes”时,我希望出现“Test McTestFace”。
我尝试同时使用 LIKE 和 MATCH AGAINST 方法,但似乎都不起作用。使用 MATCH AGAINST 时,什么也不会出现,而使用 LIKE 时,只会出现直接匹配。
我的 MATCH AGAINST 代码:
if (isset($_POST['submit']))
{
$query = $db->prepare("SELECT * FROM accounts WHERE MATCH (name) AGAINST (:query)");
$query->execute(array('query' => $_POST['query']));
$result = $query->fetch();
}
print_r($result);
我的 LIKE 代码:
if (isset($_POST['submit']))
{
$query = $db->prepare("SELECT * FROM accounts WHERE name LIKE :query");
$query->execute(array('query' => $_POST['query']));
$result = $query->fetch();
}
print_r($result);
抱歉,谢谢。
最佳答案
如果使用 LIKE
,您需要使用通配符 %
包装查询以使其工作。
来自docs :
With LIKE you can use the following two wildcard characters in the pattern:
% matches any number of characters, even zero characters.
_ matches exactly one character.
即
$query->execute(array('query' => '%' . $_POST['query'] . '%'));
关于php - 尝试使用 PDO 在 PHP 中搜索 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40692614/