0

我正在运行 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表(?)。如何使用我拥有的环境搜索多个单词?

4

1 回答 1

0

我认为您应该将搜索到的字符串拆分为空格(“”)并将每个段插入到您的查询或另一个查询中。例如 :

$str = "word1 word2";

这样,您首先搜索整个字符串“word1 word2”,然后在数据库中搜索“word1”和“word2”。使用此解决方案,您应该处理一个单词忽略列表,因为像“a, an, the, or, ...”之类的单词不应该是 seek ...

我不确定 innoDB 表是否有其他方法......最好的解决方案显然是使用“匹配”命令,但它仅适用于 MyISAM 下的全文索引。

于 2012-07-18T12:37:09.900 回答