Страницы

Поиск по вопросам

пятница, 20 марта 2020 г.

Не выводить повторяющиеся значения [MySQL]

#php #mysql


В базе данных есть 5 строк, с полем description(описание). В каждой из строк в поле
description есть хэштег "#istanbul".

В 1-ой строчке - "#istanbul",
Во 2-ой строчке - "#IstanbulNight",
В 3-ей строчке - "#Istanbul",
В 4-ой строчке - "Hello and #WelcomeToIstanbul",
В 5-ой строчке - "My first travel to #Istanbul",

Мне необходимо вывести все строки, у которых в поле description есть в хэштегэ слово
"istanbul". Одинаковые значение не должны повторяться, например:

Должны выводиться только 1, 2, 4 строка, так как 3 и 5 идентичны 1-ой не учитывая
регистр. Необходимо убрать только те сроки, в которых один единственный хэштег "#istanbul"

Мой код:

$GetQUERY = "#istanbul";

SELECT * FROM `".PREFIX."_photos` WHERE description LIKE'%{$GetQUERY}%' ORDER by
`uploaded_date` ASC


Хотел использовать SELECT DISTINCT. Не помогает. Подскажите как решить данную проблему

P.S. я новичок, строго не судить
    


Ответы

Ответ 1



Вот так отберутся строки, в которых есть тег, отсутствующий в предыдущих $arr = [ "#istanbul", "#IstanbulNight", "#Istanbul", "Hello and #WelcomeToIstanbul. You are in #istanbul now", "My first travel to #Istanbul",]; // сюда собираем все найденные теги $prev = []; $r = []; foreach($arr as $x) { if(preg_match_all('~#\w+~', $x, $match)) { // если надо не зависеть от регистра $match[0] = array_map('strtolower', $match[0]); // если все уже были, пойдем дальше if( ! ($d = array_diff($match[0], $prev))) { continue; } // добавим новые, обнаруженные в строке array_push($prev, ...$d); } $r[] = $x; } print_r($r); // [ '#istanbul', '#IstanbulNight', 'Hello and #WelcomeToIstanbul. You are in #istanbul now']

Ответ 2



$query = "SELECT * FROM `".PREFIX."_photos` WHERE description LIKE'%{$GetQUERY}%' ORDER by `uploaded_date` ASC"; $result = $conn1->query($query); while($row = mysqli_fetch_assoc($result)) { $data[]=$row; } $data=array("0"=>"#IstanbulNight", "1"=>"#Istanbul", "2"=>"Hello and #WelcomeToIstanbul", "3"=>"My first travel to #Istanbul", "4"=>"My first travel to #Istanbul, and #GotoIstanbul", "5"=>"#Istanbul"); foreach ($data as $key => $value) { # code... $pos=strpos($value,"#Ist"); if($pos===false){ $big[]=$value; }else{ $nig[]=$value; } } print_r($nig); $result = array_unique($nig); print_r($result);

Комментариев нет:

Отправить комментарий