Опитайте това:
SET @query = "SELECT * FROM projects WHERE ";
SET @l_project_name = CONCAT("a.project_name LIKE '%", projectName, "%'");
SET @l_project_type = CONCAT(" OR a.project_type LIKE '%", projectType, "%'");
SET @l_project_description = CONCAT(" OR a.project_description LIKE '%", projectDescription, "%'");
SET @l_full_search_clause = CONCAT(@l_project_name, @l_project_type, @l_project_description);
SET @query = CONCAT(@query, @l_full_search_clause);
PREPARE stmt FROM @query;
EXECUTE stmt;
Смятам, че трябва да използвате @var
синтаксис за променливи. Също така, за да изпълните заявка, която се съхранява в низ, трябва да използвате PREPARE
и EXECUTE
.
И не е нужно да използвате UPPER
на струни. По подразбиране MySQL сравнява низовете без значение на главните букви. Можете да се уверите в това, като разгледате типа на съпоставяне за вашите полета. ci_
тези означават "нечувствителни към главни букви".