Регулярное выражение mysql с оператором AND - PullRequest
0 голосов
/ 19 февраля 2019

Я создал поле поиска, и если я буду искать «Шпинат, Арбуз», он взорвет ввод с помощью «,» и запустит поисковую базу данных MySQL.Это означает, что SQL будет работать как

SELECT * FROM table WHERE 
(vegetable LIKE '%Spinach%' OR fruits LIKE '%Spinach%') AND (vegetable LIKE '%Watermelon%' OR fruits LIKE '%Watermelon%')

Данные таблицы моей базы данных выглядят примерно так:

id  Vegetable  fruits
----------------------
1   Spinach    Apple
2   Cucumber   Orange
3   Spinach    Watermelon

Результат каждого идентификатора может появиться только один раз.

<php>
$keywords = trim($_REQUEST['keyword']);
$keywords = preg_replace("/,\s*/", "|", $keyword);
$where = "[[:<:]](" . $keywords . ")[[:>:]]";

$sql = "SELECT * FROM table ";
$sql .= "WHERE vegetable REGEXP '" . $where . "' OR fruits REGEXP '" . $where . "'";
$result = mysqli_query($conn, $sql);
while ($rs = mysqli_fetch_array($result)) 
{
    $vege = $rs["vegetable"];
    $fruits = $rs["fruits"];
}

</php>


<html>
<form method=post>
    <input type="text" class="form-control" placeholder="SEARCH..." value="<?=$keywords?>">
</form>
</html>

1 Ответ

0 голосов
/ 19 февраля 2019

Вот буквальный запрос MySQL, использующий REGEXP:

SELECT *
FROM table
WHERE
    (vegetable REGEXP '[[:<:]]Spinach[[:>:]]' OR fruits REGEXP '[[:<:]]Spinach[[:>:]]') AND
    (vegetable REGEXP '[[:<:]]Watermelon[[:>:]]' OR fruits REGEXP '[[:<:]]Watermelon[[:>:]]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...