В базе есть строка такого вида 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);
Нужно чтобы поиск в данном случае проигнорировал то что между словами Женщинам и Пиджаки.
Единственное, что можно подсказать без починки структуры базы - строить запрос динамически:
$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);
Если у вас запрос написан так как вы указали, то он у вас вообще не работает, потому что в нем нет конструкции WHERE.
$sql = "SELECT * FROM product WHERE category LIKE :txt";
$sth = $db->prepare($sql);
$sth->execute( [':txt' => "%{$category}%"] );
return $result = $sth->fetchAll(PDO::FETCH_ASSOC);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей