如何在MySQL中消除重复的搜索结果?

I am having some trouble displaying text from database using PHP and SQL. Below is a script similar to what I have.

$search_split = explode(" ", $search); //$search is what user entered
foreach ($search_split as $searcharray) {
    $searched = mysqli_query($connect, "SELECT * FROM people WHERE `description` LIKE '%$searcharray%'");
    while($info = mysqli_fetch_array($searched)) {
    echo $info['description'];
    }
}

So, for example the user enter 'He is male'. I split the word into three part 'He', 'is' and 'male' using 'explode' function. After that, I search the database for words that is similar to those three word. However, if a row have all the three words, it would display the row three times. How can I make it to display only once?

First store your results into one array then display it. Refer below code.

$search_split = explode(" ", $search); //$search is what user entered
foreach ($search_split as $searcharray) {
    $searched = mysqli_query($connect, "SELECT * FROM people WHERE `description` LIKE '%$searcharray%'");
    while($info = mysqli_fetch_array($searched)) {
     $results[$info['YOUR_PRIMARY_KEY']] = $info['description']; // this will over write your previous record
    }
}
foreach($results as $result){
  echo $result;
}

Now every records display only once.

You have put your db query in a foreach loop, which loops 3 times (with the current data: he, is and male). What you want to do is put all the search variables in one query, something like:

$search_split = explode(" ", $search); //$search is what user entered
$querypart = "'%" . implode("%' AND '%", $search_split) . "%'"; // use OR or AND, to your liking

$searched = mysqli_query($connect, "SELECT * FROM people WHERE `description` LIKE " . $querypart);
while($info = mysqli_fetch_array($searched)) {
    echo $info['description'];
}

This does not take any escaping/sanitizing of the query input, be aware...

You could do something like this:

$search = 'test search me';
$search_split = array_map(function($piece) use ($mysqli_connection){
    return "'%" . $mysqli_connection->real_escape_string($piece) . "%'";
}, explode(' ', $search)); //$search is what user entered
$search_split = implode(' OR `description` LIKE ', $search_split);
$sql = "SELECT * FROM people WHERE `description` LIKE $search_split";
echo $sql; // SELECT * FROM people WHERE `description` LIKE '%test%' OR `description` LIKE '%search%' OR `description` LIKE '%me%'
$searched = mysqli_query($connect, $sql);

Can you use full text search?

Add a full text index to the table

ALTER TABLE people ADD FULLTEXT(description);

Then you can use a query like this

SELECT * 
FROM people 
WHERE 
MATCH ( description ) 
AGAINST ('+He +is +male' IN BOOLEAN MODE)
$result = array();    

$search_split = explode(" ", $search); //$search is what user entered
    foreach ($search_split as $searcharray) {
        $searched = mysqli_query($connect, "SELECT * FROM people WHERE `description` LIKE '%$searcharray%'");
        while($info = mysqli_fetch_array($searched)) {
            $result[] = $info['description'];
        }
    }

$finalres = array_unique($result);

so, finalres contains unique results

for($i = 0; $i < count($finalres); $i++)
    echo $finalres[$i];