Я пытаюсь понять сценарий для реализации новых функций и опций. Для поиска в таблицах sql они использовали следующий синтаксис
$sqlquery = "SELECT DISTINCT \"Name\", \"FileName\", \"Status\", lower(\"Name\") FROM \"" . $SearchedTable . "\" WHERE ";
$sqlquery=$sqlquery." (\"Name\" ~* '".$text[$i]."' OR \"DNA\" ~* '".$text[$i]."')";
Спасибо, адаптировал. Я не хотел задавать свой полный вопрос. Я бы не очень ясно сказал.
Это Postgresql, а не mysql. Найдите операторы сопоставления с образцом.
Если вы хотите избежать внедрения sql, прочтите руководство по PDO






Общее примечание: в вашем текущем запросе используется конкатенация строк, поэтому он подвержен SQL-инъекции. Лучшее решение на вашей стороне PHP - использовать подготовленный оператор.
При этом ваш синтаксис SQL выглядит как Postgres, а не MySQL. Вот примерный запрос:
SELECT DISTINCT Name, FileName, Status, lower(Name)
FROM yourTable
WHERE Name ~* ? OR DNA ~* ?;
Оператор ~* в Postgres выполняет сопоставление регулярных выражений без учета регистра. Так, например, чтобы сопоставить любой Name, который начинается с mi, вы можете использовать:
WHERE Name ~* '^mi'
Следовательно, то, что вы должны привязать к двум заполнителям, - это регулярные выражения.
Мои столбцы содержат полные предложения. Так, например, я обнаружил, что строка, содержащая мои таблицы, содержит полные предложения ". Этот оператор найдет эту строку, когда мой sqlquery содержит, например," WHERE Name ~ * full "?
Вам понадобятся одинарные кавычки вокруг full, но да, это будет. Вы, вероятно, также захотите окружить full границами слов, чтобы соответствовать только полному слову, а не как подстроке. Так что, возможно, использовать WHERE Name ~* '\yfull\y'.
Вы уверены, что это
mysql, а неpostgres?~используется в mysql как побитовый оператор, а также как оператор отрицания при полнотекстовом поиске. Похоже, что ни то, ни другое здесь не играет роли. Где в postgresql~- это оператор регулярного выражения, который имеет гораздо больше смысла в этом контексте.