Я хотел бы создать поисковую систему, которая отображает результаты по ранжированию preset. Рейтинг состоит из двух частей: 1. Количество просмотров сообщений (представлено POP [INT] в таблице «post») и количество слов в самом тексте (представлено TXT [STRING] в таблице «post»).Оценка результатов поиска путем подсчета слов, связанных с PDO/SQL
То есть, если существует три Результатов
//$search = 'apple macbook';
- 3 хитов (POP) и 3 ключевых слов, связанных (2 Macbook, 1 яблоко найдено в TXT) = - будут представлены
- 2 посещения (POP) и 3 ключевых слов, связанных (1 MACBOOK, 1 APPLE найдено в TXT) = - будет представлен Второй
- 2 хитов (POP) и 1 ключевых слов, связанных (1 APPLE найти в TXT) = - будет представлен Третий
Мой код :
$search = isset($_GET['s']) ? htmlspecialchars($_GET['s']) : '';
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim($search);
$words = explode(' ', $search);
$words_condition = array();
$arguments = array();
foreach ($words as $word) {
$words_condition[] = 'TXT LIKE ?';
$arguments[] = '%'.$word.'%';
}
$query = $db->prepare("SELECT * FROM `post` WHERE ".implode(" OR ",
$words_condition)." ORDER BY POP DESC"); $query->execute($arguments);
О моей таблицы структуры ("пост" таблицы) есть 4 Co lumn ...
- ID [INT] 2. SUB (тема поста) [STRING] 3. TXT (тело/полный текст) [STRING] 4. POP [INT] (хитов визита эта почта).
Можете ли вы дать нам свою структуру стола? – Philipp
Вы не используете подготовленные операторы правильно. Просто конкатенируя поисковые термины, вы по-прежнему уязвимы для SQL-инъекции – Philipp
@Philipp благодарит вас за ваш комментарий .. о моей структуре таблицы (столбец «post») есть 4 столбца ... 1. ID [INT] 2. SUB (предмет сообщения) [STRING] 3. TXT (тело/полный текст) [STRING] 4. POP [INT] (хиты посещения этого сообщения). – TheQuestionerMan