Felkod:1054. Okänd kolumn 'SPA' i 'where-sats'
Detta händer när du inte omger indatasträngen inom citattecken och SQL-motorn försöker identifiera den som en kolumn i tabellen som frågas. Men den misslyckas eftersom den inte kan hitta den.
Men vad händer när den hittar en sådan kolumn?
Den hämtar resultat när den hittar några matchningar på kolumnvärdena.
Det är uppenbarligen inte vad man förväntade sig.
Hur kan man övervinna detta? Använd Prepared Statements med dynamiska ingångsvärden.
Du kan använda platshållare som ?
i lagrade procedurer också på dynamiska inmatningsvärden att använda med Prepared Statements
. Motorn kommer att hantera escape-tecken och andra strängvärden när den tilldelas eller jämförs inom SQL-uttryck.
Du behöver bara omtilldela proceduringångar till en eller flera sessionsvariabler efter behov.
Exempel på din procedur :
CREATE PROCEDURE `test1`( IN tab_name VARCHAR(40), IN w_team VARCHAR(40) )
BEGIN
SET @t1 = CONCAT( 'SELECT * FROM ', tab_name, ' where team = ?' ); -- <-- placeholder
SET @w_team := w_team;
PREPARE stmt3 FROM @t1;
EXECUTE stmt3 USING @w_team; -- <-- input for placeholder
DEALLOCATE PREPARE stmt3;
END;