$rows
ще има данните, където вашата ключова дума code
съвпадения във вашата таблица, можете да пренапишете кода си, за да съвпадне и за двете ключови думи като
$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$query = 'SELECT * FROM A ';
$i = 0;
$params = array();
foreach ($exploded as $value):
if ($i == 0) {
$query .= ' WHERE `text` LIKE :value_'.$i;
} else {
$query .= ' OR `text` LIKE :value_'.$i;
}
$params[':value_'.$i] = '%'.$value .'%';
$i++;
endforeach;
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
'; Изградете заявката си в цикъл (върху предоставените от вас ключови думи) и задайте уникални заместители в заявката, които да съвпадат за всички стойности
Редактиране за пълнотекстово търсене
Използвайки пълнотекстово търсене, можете да съпоставите точно същата фраза с предоставената ключова дума. За да работите с пълнотекстово търсене, имате нужда от индекс от тип FULLTEXT
.
ALTER TABLE `A` ADD FULLTEXT INDEX `fulltextindex` (`text`);
И заявката ще бъде като
$keyword = 'hello code';
$exloded = explode(' ', $keyword);
$where = '';
$i = 0;
$select = array();
$params = array();
foreach ($exploded as $value):
$select[]= ' MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE) ';
if ($i == 0) {
$where .= ' WHERE MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
} else {
$where .= ' OR MATCH(`text`) AGAINST(:value_'.$i.' IN BOOLEAN MODE)';
}
$params[':value_'.$i] = $value ;
$i++;
endforeach;
$query ='SELECT *,'. implode( ' + ',$select).' AS score FROM A '.$where.' ORDER BY score DESC';
$sth = $db->query($query);
$sth->execute($params);
$rows = $sth->fetchAll();
echo '<pre>';print_r($rows);echo '</pre>';
'; Горният код ще създаде заявка като
SELECT *,
MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
+
MATCH(`text`) AGAINST('code' IN BOOLEAN MODE) AS score
FROM A
WHERE MATCH(`text`) AGAINST('hello' IN BOOLEAN MODE)
OR MATCH(`text`) AGAINST('code' IN BOOLEAN MODE)
ORDER BY score DESC
Псевдоним score
в горната заявка ще има стойност за всеки ред и съответстващия му резултат, така че можете да подредите резултата си по низходящ начин, за да се покажат първи записите, които имат най-висок резултат.