2012-07-18 98 views
0

我正在運行MySQL版本5.1.57MySQL(innoDB)PHP搜索多個詞

我有一個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表(?)。我如何能夠使用我擁有的環境搜索多個單詞?

+0

你可能想看到這個:http://stackoverflow.com/questions/1252135/best-way-to-implement-search-functionality-using-innodb?rq=1 – 2012-07-18 11:52:22

+0

和這個也http:// stackoverflow.com/questions/1381186/fulltext-search-with-innodb – Kirzilla 2012-07-18 12:37:06

回答

0

我想你應該在空間(「」)上拆分搜索到的字符串,並在查詢中或其他查詢中插入每個段。例如:

$ str =「word1 word2」;

這樣,您首先搜索整個字符串「word1 word2」,然後在數據庫中搜索「word1」和「word2」。 有了這個解決方案,你應該處理一個單詞忽略列表,因爲像「一,一,或,...」這樣的單詞不應該尋找......

我不確定是否有其他方式使用innoDB表...最好的解決方案顯然是使用「match against」命令,但它僅適用於MyISAM下的全文索引。