我正在尝试使用这个小pdo语句搜索数据库的两列:
$search = $pdo->prepare("
SELECT * FROM books WHERE MATCH (title, author) AGAINST (? IN BOOLEAN MODE);
");
$search->execute(array('*' . $_POST['search'] . '*'));
假设我们的字符串是:
Harry Potter and the Philosopher's Stone by J.K Rowling
(我把这本书的书名和作者存储在数据库中,数据库正在使用 MyISAM
作为存储引擎)
如果我要找 Har
(第一部分) Harry
关键字)我可以返回我正在寻找的结果,但如果我键入 rry
(本文最后一部分) Harry
关键字)我不能得到我想要的结果。
如果关键字拼错了,有没有办法显示我想要的结果 Harru
而不是 Harry
(使用尽可能少的php)?
谢谢你抽出时间来!:d
2条答案
按热度按时间jmp7cifd1#
我不知道性能方面的问题,但您是否尝试过使用正则表达式?
会得到两个词:哈利,快点,哈罗,等等。。。你可以详细说明
最终检查https://dev.mysql.com/doc/refman/5.6/en/regexp.html
20jt8wwn2#
而不是
MATCH
把它弄得乱七八糟AGAINST
你可以简单地使用LIKE
(如果要同时搜索多个列,则必须绑定该列$_POST['search']
多个参数,但它会做的工作。以下是您的新声明: