我正在运行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 FULLTEXT索引的文章,但据我所知,它只适用于MyISAM
表(?)。我如何能够使用现有环境搜索多个单词?
我认为您应该在空格(")上拆分搜索到的字符串,并将每个片段插入您的查询或另一个查询中。例如:
$str="word1 word2";
这样,您首先搜索整个字符串"word1-word2",然后在数据库中搜索"word1"answers"word2"。有了这个解决方案,你应该处理一个单词忽略列表,因为像"a,an,the,or,…"这样的单词不应该被搜索。。。
我不确定innoDB表还有其他方法。。。最好的解决方案显然是使用"match-artion"命令,但它只能在MyISAM下使用全文索引。