2015-08-08 191 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

相关问题