我运行的是MySQL版本5.1.57
我有一个HTML表单,用户可以在其中插入搜索字符串。我在这个字符串上创建一个$_SESSION,然后在MySQL查询中运行它。如下所示:
<?php
$sql = mysql_query ("SELECT
s.student_firstname, s.student_lastname
FROM students s
WHERE (
s.student_firstname LIKE '%$searchstring%' OR
s.student_lastname LIKE '%$searchstring%
)
AND s.isActive = '1' ");
?>问题是当用户搜索多个单词时。那么我的查询将失败,因为它试图将字符串与任一列中的值进行匹配。
我读过一些关于MySQL全文索引的文章,但据我所知,它只适用于MyISAM表(?)。如何使用现有的环境搜索多个单词?
发布于 2012-07-18 20:37:10
我认为您应该将搜索到的字符串用空格(“")拆分,然后将每个片段插入到您的查询中,或者插入到其他查询中。例如:
$str = "word1 word2";
这样,您首先搜索整个字符串"word1 word2“,然后在数据库中搜索"word1”和"word2“。使用这个解决方案,您应该处理单词忽略列表,因为像"a,an,the,or,...“这样的单词。不应该去寻找...
我不确定有没有其他方法来处理innoDB表...最好的解决方案显然是使用“匹配对象”命令,但只有在MyISAM下才能使用全文索引。
https://stackoverflow.com/questions/11540652
复制相似问题