2015-08-08 189 views
1

首先,讓我解釋我將如何處理這段代碼。我有一個數據庫和一個用戶界面來搜索其中的值。用戶可能會輸入多個關鍵字。所以我需要檢查數組中是否存在數組中的所有值。檢查字符串是否包含數組的所有值

舉例來說,如果他們將鍵入「青蘋果」,我有這樣的一個字符串值「這綠色雜交鬆蘋果是嚴重」,我應該顯示該搜索結果。在這個帳戶上,我想出了一點,我需要找到一種方法來檢查字符串值是否包含數組中的所有值。

萬分感謝

回答

-1

我猜mysql的全文搜索可以幫助你,如果你從數據庫中的數組。

+0

由於類似的東西,但我怕我不明白我怎麼會使用MySQL的文本搜索來解決這個問題。 – Zedman

+0

這比編寫搜索排名算法容易得多。 http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html –

0

如果您不是通過TEXT進行搜索,則可以使用MySQL Like

CREATE TABLE TableA (
    `text` VARCHAR(255) NOT NULL PRIMARY KEY 
); 

INSERT INTO TableA (`text`) VALUES 
('I like green and purple apples'), 
('I hate red apples'), 
('You like oranges'); 

您將不得不從PHP中的數組構建喜歡的字符串。以下我使用PDO,但您可以輕鬆調整它以適應mysqli

$search_query = "green apples"; 
$keywords = explode(' ', $search_query); 

$where = '1'; /* We use the 1 so we can prepend 'AND' w/o another case. */ 
foreach ($keywords as &$word) { 
    $where .= " AND LIKE ?"; 
    $word = "%{$word}%"; 
} 

unset($word); 

$stmt = $PDO_Connection->prepare("SELECT `text` FROM Table A WHERE {$where}"); 
if ($stmt->execute([$keywords])){ 
    while ($row = $stmt->fetch()){ 
     echo $row['text'] . '<br />'; 
    } 
} 

如果您是通過文本搜索,你可以做Full Text Search

相關問題