No, no, no. You cannot delegate query generation to MySQL. It's your job. You need something like ...
BEGIN
SET @sql =
"DEFAULT "SELECT car.id
, model.manufacturer
, model.modelname
, car.year
, color.color_name
, interior_color.interior_color
, car.doors
, car.retailprice
, car.dealercost
, transmission_type.transmission_type
FROM car
JOIN model ON car.model_id=model.id
JOIN color ON car.color_id=color.id
JOIN interior_color ON interior_color.id=car.interior_color_id
JOIN transmission_type ON car.transmission_type_id=transmission_type.id
WHERE 1=1";
IF mydoors IS NOT NULL THEN
SET @sql = CONCAT(@sql,' AND car.doors LIKE ',char(39),'%',mydoors,'%',char(39));
END IF;
IF mymodel IS NOT NULL THEN
SET @sql = CONCAT(@sql,' AND car.model LIKE ', char(39),'%',mymodel,'%',char(39));
END IF;
-- and so on for each additional param ...
PREPARE stmt FROM @sql;
EXECUTE stmt;
DROP PREPARE stmt;
Edited 2 time(s). Last edit at 03/17/2009 09:47AM by Peter Brawley.