token: sessionStorage.getItem('secretKey')}||"" }}
Как насчет использования ||
, чтобы убедиться, что токен не является неопределенным?
Для одного ключевого слова в полях VARCHAR вы можете использовать LIKE
:
SELECT id, category, location
FROM table
WHERE
(
category LIKE '%keyword%'
OR location LIKE '%keyword%'
)
Для описания обычно лучше добавить полнотекстовый индекс и выполнить полнотекстовый поиск (только MyISAM):
SELECT id, description
FROM table
WHERE MATCH (description) AGAINST('keyword1 keyword2')
SELECT
*
FROM
yourtable
WHERE
id LIKE '%keyword%'
OR position LIKE '%keyword%'
OR category LIKE '%keyword%'
OR location LIKE '%keyword%'
OR description LIKE '%keyword%'
OR refno LIKE '%keyword%';
В идеале, иметь таблицу ключевых слов, содержащую поля:
Keyword
Id
Count (possibly)
с индексом по ключевому слову. Создайте триггер вставки / обновления / удаления для другой таблицы, чтобы при изменении строки каждое ключевое слово извлекалось и помещалось (или заменялось) в этой таблице.
Вам также понадобится таблица слов, чтобы не считать как ключевые слова (если и так, но, ...).
Таким образом, вы получите наилучшую скорость для запросов, желающих искать ключевые слова, и сможете (относительно легко) реализовывать более сложные запросы. такие как «содержит Java и RCA1802».
Запросы «LIKE»
будут работать, но они также не будут масштабироваться.
Лично я бы не использовал сравнение строк LIKE
в поле ID или любом другом числовое поле. Поиск по идентификатору № « 216 » не имеет смысла для возврата 16 216 , 216 51, 3 216 087 , 53 216 68 ... и т. Д. И т. П .; Аналогично с заработной платой.
Кроме того, если вы хотите использовать подготовленные операторы для предотвращения SQL-инъекций, вы должны использовать строку запроса, например:
SELECT * FROM job WHERE `position` LIKE CONCAT('%', ? ,'%') OR ...