Поиск слов в базе данных

197
13 сентября 2018, 10:40

В базе есть строка такого вида a:3:{i:0;s:16:"Женщинам";i:1;s:12:"одежда";i:2;s:14:"Пиджаки";} т.е функция php serialize нужно осуществить поиск по словам: Женщинам и Пиджаки мой запрос в БД ищет эти слова как одно целое и не находит совпадения.

$category = 'Женщинам Пиджаки';
$sql = "SELECT * FROM product category LIKE :txt";
$sth = $db->prepare($sql);
$sth->execute( [':txt' => "%{$category}%"] );
return $result = $sth->fetchAll(PDO::FETCH_ASSOC);

Нужно чтобы поиск в данном случае проигнорировал то что между словами Женщинам и Пиджаки.

Answer 1

Единственное, что можно подсказать без починки структуры базы - строить запрос динамически:

$category = 'Женщинам Пиджаки';
$categories = preg_split('/\s+/', $category);
$likes = array_fill(0, count($categories), 'category LIKE ?');
$likes = '('.implode(' AND ', $likes) .')';
$sql = "SELECT * FROM product WHERE $likes";
// SELECT * FROM product WHERE (category LIKE ? AND category LIKE ?)
$sth = $db->prepare($sql);
$sth->execute(array_map(function($cat) {
  return '%"'. $cat . '"%';
}, $categories));
return $result = $sth->fetchAll(PDO::FETCH_ASSOC);
Answer 2

Если у вас запрос написан так как вы указали, то он у вас вообще не работает, потому что в нем нет конструкции WHERE.

$sql = "SELECT * FROM product WHERE category LIKE :txt";
$sth = $db->prepare($sql);
$sth->execute( [':txt' => "%{$category}%"] );
return $result = $sth->fetchAll(PDO::FETCH_ASSOC);
READ ALSO
Как скрыть записи в блоге от неавторизованных?

Как скрыть записи в блоге от неавторизованных?

Вот простое требованиеЗаходишь на сайт как гость и видишь сообщение типа "авторизуйтесь для просмотра записей", войдя на сайта видны все...

169
Red bean не сохраняет R::store

Red bean не сохраняет R::store

Сохраняю таблицу а б таблице вместо заданых значений Null, хотя значения GET не пустыеПробовал и без даты сохранять, все равно не получается

170
JS при открытии файла PHP его не видит или еще что-то выдает ошибки, как исправить?

JS при открытии файла PHP его не видит или еще что-то выдает ошибки, как исправить?

При работе на локальном сервере все шло отлично(перенес код на Wordpress случились ошибки)Мой JS скрипт не может обратиться к PHP скрипту ,который...

198
Как сойденить webrtc (node.js) с php?

Как сойденить webrtc (node.js) с php?

У меня есть 2 разных части проекта, одна сделана на nodejs - это p2p webrtc видео чат, вторая на php, это парсер

178