Essayez ceci :
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;
Je crois que vous devez utiliser le @var
syntaxe pour les variables. De plus, pour exécuter une requête qui est stockée dans une chaîne, vous devez utiliser PREPARE
et EXECUTE
.
Et vous n'êtes pas obligé d'utiliser UPPER
sur les cordes. Par défaut, MySQL compare les chaînes sans tenir compte de la casse. Vous pouvez vous en assurer en examinant le type de classement de vos champs. ci_
ceux signifient "insensible à la casse".