簡體   English   中英

MySQL(innoDB)PHP搜索多個單詞

[英]MySQL (innoDB) PHP search multiple words

我正在運行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”和“ word2”。 使用此解決方案,您應該處理單詞忽略列表,因為不應查找諸如“ a,an,the或...”之類的單詞。

我不確定innoDB表是否有其他方法。最好的解決方案顯然是使用“匹配對象”命令,但是僅在MyISAM下具有全文本索引時才可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM