Hãy thử điều này:
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;
Tôi tin rằng bạn phải sử dụng @var
cú pháp cho các biến. Ngoài ra, để thực hiện một truy vấn được lưu trữ trong một chuỗi, bạn phải sử dụng PREPARE
và EXECUTE
.
Và bạn không cần phải sử dụng UPPER
trên chuỗi. Theo mặc định, MySQL so sánh các chuỗi không phân biệt chữ hoa chữ thường. Bạn có thể đảm bảo điều đó bằng cách xem xét loại đối chiếu cho các trường của bạn. ci_
những cái viết tắt của "phân biệt chữ hoa chữ thường".