[英]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.